[JAVA] Tri de Tableau

Résolu
ramune Messages postés 10 Statut Membre -  
 danimo -
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. kij_82 Messages postés 4102 Date d'inscription   Statut Contributeur Dernière intervention   857
     
    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.
    0
  2. aaazzz
     
    je pense q'il y a une erreur au niveau de la permutation des cases !
    0
  3. danimo
     
    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
    0