bonjours,
voila je voudrais trier un tableau 2D de bytes:
2 120 3 5
2 12 5 10
1 0 150 2
5 10 5 0
ce qui donne apres le tri
1 0 150 2
2 12 5 10
2 120 3 5
5 10 5 0
Mais je n'arrive pa a implementer l'algo...
si vs avez une idée
Version imprimable
bonjours,
voila je voudrais trier un tableau 2D de bytes:
2 120 3 5
2 12 5 10
1 0 150 2
5 10 5 0
ce qui donne apres le tri
1 0 150 2
2 12 5 10
2 120 3 5
5 10 5 0
Mais je n'arrive pa a implementer l'algo...
si vs avez une idée
Si chaque ligne est effectivement une chaîne de caractères, tu n'as (quasiment) rien à faire pour les trier, et surtout pas d'algorithme à implémenter: java va faire le travail pour toi.
La classe String implémente "Comparable" et l'ordre par défaut est l'ordre lexicographique. Pour le tri, la méthode est dans la FAQ.
non c'est un tableau de bytes, j'ai corrigé mon post.
C'est juste qu'il faut trier ce tableau ligne par ligne.
Merci
romainromain ecrit
si je comprends on trie les lignes par rapport a leur premier elementCitation:
voila je voudrais trier un tableau 2D de bytes:
2 120 3 5
2 12 5 10
1 0 150 2
5 10 5 0
ce qui donne apres le tri
1 0 150 2
2 12 5 10
2 120 3 5
5 10 5 0
alors tu trie la premiere conlonne en faisant chaque fois la permutation de toute la ligne
Merci mais non si le premier element est le meme on tri suivant le second et ainsi de suite mais je crois avoir résolu le probleme:
Seul probleme c'est pas du tout optimisé a mon avis....MerciCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public void inverser(byte tab[][],int ligne,int nbLus){ byte tmp; for(int i=0;i<nbLus;i++){ tmp=tab[ligne][i]; tab[ligne][i]=tab[ligne+1][i]; tab[ligne+1][i]=tmp; } if(ligne==num) num++; } public void trier(byte tab[][],int nbLus){ boolean encore,equal; int col; do{ encore=false; for(int i=0;i<nbLus-1;i++){ equal=false; col=0; do{ equal=false; if(tab[i][col]>tab[i+1][col]){ inverser(tab,i,nbLus); encore=true; } else{ if(tab[i][col]==tab[i+1][col] && col<nbLus-1){ col++; equal=true; } } }while(equal); } }while(encore); }
Bonjour,
Effectivement tu peux utiliser un tri plus rapide:
Collections.sort te permet de trier n'importe quel objet à l'aide d'un Comparator.
ici ton objet est une linge constitée d'un tableau de byte
un problème similaire est évoqué ici:
http://www.developpez.net/forums/sho....php?p=2674602