[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. 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.
    1. je pense q'il y a une erreur au niveau de la permutation des cases !
      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