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! :roll:
Résultat: |3|5|6|9|
Avez vous des suggestions? Merci
Version imprimable
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! :roll:
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.
Merci pour votre réponse, mais il s'agit pas d'un exercice :aie:
J'ai essayé de faire ça pour mes connaissances et j'ai pas réussi :roll: , 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:
1
2
3 HashSet<Personne> hs = new HashSet<Personne>(); Iterator<Personne> it = hs.iterator();
Merci :ccool:Code:
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:Personne [] lstper = new Personne[hs.size()];
On a le foreach en Java. Depuis un petit moment en plus !
Cordialement,Code:
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.
Et sinon il y a la méthode
depuis encore plus longtemps que le for each.Code:Collection.toArray(T[])
Certes elle n'était pas générique mais elle était bien là :P
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:
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:
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é !!! :calim2:
Car je vais l'appliquer dans mon cas c'est tt !8O
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.