bonjour,
je me casse la tête sur le tri d'un tableau par ordre croissant ligne par ligne et caractère par caractère. Je vous met un exemple de reponse mais je l'ai pas trouvé ainsi.
Merci de votre aide, je donne plus bas les fonctions utilisées et le programme principal
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Voici le contenu de votre tableau : TabTri[0] = 9111 TabTri[1] = 1944 TabTri[2] = 4492 TabTri[3] = 2229 Voici le contenu de votre tableau après le tri : TabTri[0] = 1111 TabTri[1] = 2222 TabTri[2] = 4444 TabTri[3] = 9999
mon code est un peut en vrac avec 2 fonctions en plus du programme principal
fonction echanger
fonction tri
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private static void echanger(String[] nbr, int jechange) { String sauvegarde = nbr[jechange]; nbr[jechange] = nbr[jechange + 1]; nbr[iechange + 1] = sauvegarde; }
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 private static void triNumeric(String[] nbr, int nb) { boolean inverse; // vrai si on effectue au moins une inversion de // deux éléments dans la petite boucle, c'est-à-dire si le tableau n'est // pas encore complètement trié do { inverse = false; for (int i = 0; i < nb - 1; i++) // du premier à l'avant-dernier élément { for (int j=0; j < nbr[i].length()-1; j++) { if (nbr[j].charAt(j) > nbr[j + 1].charAt(j + 1)) // test des éléments caractère par caractère, si plus grand que //son successeur { inverse = true; // le tableau n'est pas encore ordonné echanger(nbr, j); } } } } while (inverse); // trier tant qu'il reste des éléments non // ordonnés, donnant lieu à des inversions }
programme principal
EXECUTION
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 final static int MAXLIG = 4; public static void main(String[] argument) throws IOException { int index; String chaine; String[] tabTri = new String[MAXLIG]; index = 0; do { System.out.print(" Entrer les 4 Nombres de la " + (index + 1) + "è ligne de votre tableau de : "); Scanner sc = new Scanner(System.in); chaine = sc.nextLine(); chaine = chaine.trim(); if (chaine.length() > MAXLIG) { chaine = chaine.substring(0, MAXLIG); } tabTri[index] = chaine; index++; } while (index < MAXLIG); System.out.println(); System.out.println(" Voici le contenu de votre tableau : "); for (index = 0; index < MAXLIG; index++) { System.out.println(" TabTri[" + index + "] = " + tabTri[index]); } //appel de ma fonction tri triNumeric(tabTri, MAXLIG); System.out.println(); System.out.println(" Voici le contenu de votre tableau après le tri : "); for (index = 0; index < MAXLIG; index++) { System.out.println(" TabTri[" + index + "] = " + tabTri[index]); }
après exécution, il se passe rien. aucun tri, rien n'a changé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Voici le contenu de votre tableau : TabTri[0] = 9111 TabTri[1] = 1944 TabTri[2] = 4492 TabTri[3] = 2229 Voici le contenu de votre tableau après le tri : TabTri[0] = 9111 TabTri[1] = 1944 TabTri[2] = 4492 TabTri[3] = 2229
Partager