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
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.
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
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 elementvoila 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....Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager