Salut à tous,
J'ai un tableau "nombre" de 4 éléments (entiers)... Par exemple: |5|3|9|6|
Je cherche à le trier par un simple code en JAVA!
Résultat: |3|5|6|9|
Avez vous des suggestions? Merci
Salut à tous,
J'ai un tableau "nombre" de 4 éléments (entiers)... Par exemple: |5|3|9|6|
Je cherche à le trier par un simple code en JAVA!
Résultat: |3|5|6|9|
Avez vous des suggestions? Merci
Il existe une méthode dans l'API effectuant le tri d'un tableau d'entiers (Arrays.sort()).
Mais s'il s'agit d'un exercice, je suppose que le but est d'implémenter toi-même l'algorithme de tri. Tu as alors plusieurs algorithmes connus te permettant de résoudre le problème :
- tri à bulles
- tri par fusion
- etc.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
Merci pour votre réponse, mais il s'agit pas d'un exercice
J'ai essayé de faire ça pour mes connaissances et j'ai pas réussi, c'est pk j'ai posté !
J'ai un autre problème, entre autre: J'ai une collection HashSet remplie d'éléments de type Personne :
Comment remplir un tableau de type Personne, aussi, par les éléments de HashSet? parceque j'ai travaillé avec ce code et ça n'a pas marché:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 HashSet<Personne> hs = new HashSet<Personne>(); Iterator<Personne> it = hs.iterator();
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int i=0; while (it.hasNext()){ lstper[i]=it.next(); i++; }![]()
Si tu veux qu'on t'aide facilement, pense toujours à nous détailler pourquoi cela n'a pas marché. Le résultat de l'exécution du code du code, ou l'erreur retourné sur la console.
Pour ton dernier problème, comment initialise tu ton tableau?
Bonjour,
Voila l'initialisation du Tableau:
Code : Sélectionner tout - Visualiser dans une fenêtre à part Personne [] lstper = new Personne[hs.size()];
On a le foreach en Java. Depuis un petit moment en plus !
Cordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 HashSet<Personne> hs = new HashSet<Personne>(); //ICI remplir la liste, sinon elle reste vide. Personne[] lstper= new Personne[hs.size()]; for(Personne personne : hs){ lstper[i]=personne; }
Patrick Kolodziejczyk.
Si une réponse vous a été utile pensez à![]()
Si vous avez eu la réponse à votre question, marquez votre discussion
Pensez aux FAQs et aux tutoriels et cours.
Et sinon il y a la méthode
depuis encore plus longtemps que le for each.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Collection.toArray(T[])
Certes elle n'était pas générique mais elle était bien là![]()
J'ai réussi à transférer les éléments du HashSet dans un tableau ...
Reste le problème du trie du tableau, J'ai procédé comme ça:
Remarque: Il s'agit d'un tableau (lstper) de Type Personne (La classe Personne possède un attribut Age)... Je veux avoir un tableau trié par age (l'ordre peut être croissant ou bien decroissant)!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 for (int j=0; j<lstper.length; j++){ min = lstper[j]; for (int z=j+1; z<lstper.length; z++){ if ((min.getAge())>(lstper[z].getAge())){ System.out.println("AGE: "+lstper[z].getAge()); per=min; min=lstper[z]; lstper[z]=per; } } }
Et pourquoi pas Arrays#sort avec un petit Comparator<Personne>, déjà ?
Bonjour,
Une façon de faire serait que la classe personne implémente l'interface Comparator<Personne>, et redéfinisse la méthode compareTo() comme suit :
Ensuite, une bonne idée pourrait être également d'utiliser un TreeSet en lieu et place du HashSet, ainsi les données seront directement triées lors de l'insertion d'éléments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 @Override public int compareTo(Pesonne autrePersonne) { if (this.getAge() < autrePersonne.getAge()) { return -1; } if (this.getAge() > autrePersonne.getAge()) { return 1; } else { return 0; } }
Mako.
Edit : Désolé pour la première phrase (totalement fausse) qui n'était que le reste d'un premier jet pas totalement effacé.
Je suis d'accord avec Mako ; même si je préfère effectuer des soustractions au lieu de comparaisons ; la spécification prévoit (et c'est une bonne idée) que les valeurs soient 0, positives, négatives : on économise des lignes de code dans la manipulation de chiffres (surtout depuis l'autoboxing).
Le TreeSet n'est pas adapté ici.
Puisque celui-ci utilise la méthode compareTo pour tester l'égalité de deux objets, il ne pourra alors y avoir qu'une seule personne par valeur pour l'age... Ce qui a mon avis n'est pas l'effet recherché ici
http://docs.oracle.com/javase/6/docs...l/TreeSet.html
Je veut le faire manuellement, c'est à dire sans se référer à Compare ou bien sort()!
Je veux juste savoir c'est quoi la faute avec mon algorithme!
A l'evidence, ce n'est pas un algorithme de tri. Essaie de donner le pseudo code de ce que tu veux faire. A en juger par ton code, ce n'est pas clair dans ton esprit.
Sinon, si tu cherches une methode simple à comprendre, tu peux essayer l'algo de tri par selection. Voir ici :
http://selkis.developpez.com/tutorie...xemples/#LIV.2
Tout ce que je cherche, c'est le code pour rendre le tableau de 4 éléments: |5|3|9|6| trié !!!
Car je vais l'appliquer dans mon cas c'est tt !
C'est ça le résultat: |3|5|6|9| .
Le lien que je t'ai donné propose 3 algos de tri
Essaie d'en ecrire un et, si tu bloques, poste le probleme.
Partager