[JAVA] Tri de Tableau

Résolu
Bonsoir tout le monde
j'aimerais savoir pourquoi mon programme ne marche pas ???

public class TriNombre {
double[] tab={35, 6, 2, 66, 100, 36, 11, 1, 6, 14};

public void Tri(double [] tab) {

double max;
double aux=0;

for(int i=0;i<8;i++){

for(int j=1;j<9;j++){

if (tab[i]>tab[j]){

tab[i]=aux;
tab[i]=tab[j];
tab[j]=aux;
}
}

}
}

public void affiche() {
for (int i=0;i<9;i++)
System.out.println(tab[i]);
}
}

en gros mon idee est de comparer UNE valeure ( la valeure max) a toutes les autres jusqu'a quelle soit a la bonne place tout au bout du tableau (c'est un tri a bulle je crois)
c'est pas le meilleur algo pour ranger un tableau mais je ne veux pas me prendre la tete avec un algo plus compliqué (genre le quick sort >_< )

Merci beaucoup

3 réponses

  1. Salut,

    À essayer:
    for(int i=0;i<10;i++){ 
              
                for(int j=0;j<10;j++){  
                 
                   if (tab[i]<tab[j]){  
                       
                      aux=tab[i]; 
                      tab[i]=tab[j];  
                      tab[j]=aux; 
                      affiche(); // pour suivre le déroulement 
                   } 
                }  
                System.out.println(""); 
             }


    Remarque:

    À toutes fins utiles, on peut très facilement trier ce genre de tableau (données comparables) en utilisant sort de la classe Arrays:

    Arrays.sort(tab); //import java.util.Arrays; 
             affiche();


    Cordialement,

    Dan
    1. je pense q'il y a une erreur au niveau de la permutation des cases !
      1. Contributeur
        Je pense qu'en modifiant ici il y a des chances que ça fonctionne mieux ;) :
        tab[i]=aux;
        tab[i]=tab[j];
        tab[j]=aux; 
        


        Transformé en :
        <code>aux=tab[i];
        // --- Sauvegarde de tab[i] dans aux et non l'inverse
        tab[i]=tab[j];
        tab[j]=aux;
        </code>

        Si après ça ça ne fonctionne toujours pas c'est que ton algo est mauvais et qu'il faut penser à en faire un autre.