A voir également:
- Tri d un vector en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Tri excel - Guide
- Java décompiler - Télécharger - Langages
5 réponses
pb.barthe
Messages postés
9
Date d'inscription
samedi 23 décembre 2006
Statut
Membre
Dernière intervention
4 janvier 2023
9
17 févr. 2008 à 00:17
17 févr. 2008 à 00:17
Salut,
Bon, je t'ai fait un petit programme tuto :
Ca devrait afficher :
Bon courage pour la suite.
Note: indique quelle version de java tu utilise la prochaine fois ;-)
Bon, je t'ai fait un petit programme tuto :
import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.Vector; public class SortableVectorOfString extends Vector implements Comparator{ /* * Numéro du caractère sur lequel on va trier * (Attention, les indices commencent à 0) */ int numChar = 0; /* * fonction de tri */ private void sortStringVector(int numChar){ /* * On précise le numéro du caractère à partir duquel doit se faire * le tri */ this.numChar = numChar; /* * Le 1er paramètre est le Vecteur à trier (moi-même) * Le 2ème paramètre est le Comparator à utiliser pour cela... * ... et c'est encore moi-même car j'implémente Comparator (ce * qui m'oblige à remplir le contrat de Comparator qui stipule * que je dois fournir une méthode 'compare') */ Collections.sort(this, this); } /* * Fonction de comparaison * @param arg0 1er String à comparer * @param arg1 2ème String à comparer * @see java.util.Comparator#compare() */ public int compare(Object arg0, Object arg1) { String s0 = (String)arg0; String s1 = (String)arg1; /* * Le plus pénible est de prendre en compte les cas où une des chaînes * n'a pas la longueur minimum requise pour le tri à partir du n-ième * caractère... */ if (s0.length() <= numChar) { // Si le 1er String n'a pas la longueur minimum requise if (s1.length() <= numChar) { // ... ni le 2ème : on dit qu'elles sont égales return 0; } else { // ... si le 2ème est à la maille : // on dit que le 1er est plus petite return -1; } } else { // Si le 1er String est assez grand if (s1.length() <= numChar) { // ... mais pas le 2ème : on dit que le 1er est plus grand return 1; } else { // Mais une fois ces cas traités, String fournit ce qu'il faut return s0.substring(numChar).compareTo(s1.substring(numChar)); } } } /* * Simple méthode d'affichage pour le test */ public void display(){ System.out.println("==============================="); System.out.println("Tri sur le car. " + numChar + ":"); for (Iterator iterator = iterator(); iterator.hasNext();) { System.out.println(iterator.next()); } } public static void main(String[] args) { // On crée l'objet SortableVectorOfString svs = new SortableVectorOfString(); // On l'alimente un peu svs.add("QsDfghjklm"); svs.add("AzErtyu"); svs.add("WxCvbn"); // 1er tri sur les chaînes complètes svs.sortStringVector(0); svs.display(); // 2ème tri ne distingue pas "AzErtyu" de "WxCvbn" svs.sortStringVector(8); svs.display(); // 3ème tri sur le 3ème car. svs.sortStringVector(2); svs.display(); // 4ème tri ne distingue toujours pas "AzErtyu" de "WxCvbn" svs.sortStringVector(8); svs.display(); } }
Ca devrait afficher :
=============================== Tri sur le car. 0: AzErtyu QsDfghjklm WxCvbn =============================== Tri sur le car. 8: AzErtyu WxCvbn QsDfghjklm =============================== Tri sur le car. 2: WxCvbn QsDfghjklm AzErtyu =============================== Tri sur le car. 8: WxCvbn AzErtyu QsDfghjklm
Bon courage pour la suite.
Note: indique quelle version de java tu utilise la prochaine fois ;-)
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
16 févr. 2008 à 13:48
16 févr. 2008 à 13:48
Salut,
Pas clair ?
Ben, tu as ton tableau que tu souhaites trier qu'on va appeler tonTableau.
Je vois pas comment être plus clair.
Cordialement
Pas clair ?
Ben, tu as ton tableau que tu souhaites trier qu'on va appeler tonTableau.
import java.util.Collections; Collections.sort(tonTableau);
Je vois pas comment être plus clair.
Cordialement
yoann_tux
Messages postés
441
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
24 juillet 2008
95
15 févr. 2008 à 12:06
15 févr. 2008 à 12:06
Bon un petit tri vite fait
en gros je fait donc un bubble sort (tri à bulles)
int i = 0; vecteur tmp; while (i< length) { //listevect -> tableau de vecteurs //listevect[i] -> vecteur à l'indice i du tableau de vecteur listevect //listevect[i][2] -> 3eme cordonnées du vecteur à l'indice i..... //tu peux remplacer listevect[i][2] par une fonction genre listevect[i].getz(); qui te renverrais ta 3 eme coordonnées. if(listevect[i][2] > listevect[i+1][2]){ tmp = listevect[i][2]; listevect[i][2] = listevect[i+1][2]; listevect[i+1][2] = tmp; i = i - 1; } i++; }
en gros je fait donc un bubble sort (tri à bulles)
Merci pour ta réponse mais je ne pense pas que je puisse l 'adapter en java .
En fait je veux sur une liste d 'un vecteur pouvoir trier un champ de caracteres par ordre croissant .
La seule méthode qui semble pouvoir le faire est la méthode collection.sort mais je n 'arrive pas à la mettre en place .
En fait je veux sur une liste d 'un vecteur pouvoir trier un champ de caracteres par ordre croissant .
La seule méthode qui semble pouvoir le faire est la méthode collection.sort mais je n 'arrive pas à la mettre en place .
void Tri(){
for (i=0; i<tab.length-1; i++){
double max;
//rechercher du max et sa position
max=tab[i];
int i0=i;
int j;
for (j=i+1; j<tab.length; j++){
if (tab[j] > max){
i0=j;
max=tab[j]; }
}
/**************************************/
/*************Permutation*************/
double f;
f=tab[i];
tab[i]=max;
tab[i0]=f; }
}
for (i=0; i<tab.length-1; i++){
double max;
//rechercher du max et sa position
max=tab[i];
int i0=i;
int j;
for (j=i+1; j<tab.length; j++){
if (tab[j] > max){
i0=j;
max=tab[j]; }
}
/**************************************/
/*************Permutation*************/
double f;
f=tab[i];
tab[i]=max;
tab[i0]=f; }
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 842
15 févr. 2008 à 14:31
15 févr. 2008 à 14:31
De mémoire, il me semble que Collections.sort est statique. Donc je dirais : Collections.sort(tonTableau);
import java.util.Collections; //ou quelque chose du genre
En espérant que ça marchera.
import java.util.Collections; //ou quelque chose du genre
En espérant que ça marchera.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
yoann_tux
Messages postés
441
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
24 juillet 2008
95
16 févr. 2008 à 10:29
16 févr. 2008 à 10:29
C'est psa clair ce que tu veux faire...
tu peux mettre un exemple ?
tu peux mettre un exemple ?