J’ai un petit problème avec le tri shell. En effet, Le tri fonctionne bien, mais je dois inclure des compteurs de comparaison et d’échange, mais j’ai l’impression que les valeurs que j’obtiens sont faibles comparer au tableau trouvé sur le net.
Les valeurs du tableau sont générées aléatoirement.
public static void TriShell(int[] T)
{
int nombreEchange=0;
int nombreComparaison=0;
int d=1; //initialisation du pas
int dimension=1; //initialisation de la taille du tableau des pas
while(3*d+1<T.length) //genere les valeurs du pas pour la dimension le tableau des pas
{
d=3*d+1; //formule du pas
dimension++;
}
int[] Shell=new int[dimension]; //creation du tableau pour y entrer les valeur du pas
int j=0; //1ere position du tableau
while(d>0)
{
Shell[j]=d; //on y entre les valeurs du pas
j++; // on incrémente une case
d=(d-1)/3; //on réduit le pas.
}
for(int m=0 ; m<Shell.length ; m++)
{
int pas = Shell[m];
for(int i=pas ; i<T.length ; i++)
{
int Temp=T[i];
j=i;
while((j>=pas)&&(T[j-pas]>Temp))
{
T[j]=T[j-pas];
j=j-pas;
nombreEchange++;
}//fin while
T[j]=Temp;
nombreComparaison++;
}//fin for
}//fin for
System.out.println("Comparaison: "+nombreComparaison+" Echanges: "+nombreEchange);
}//fin tri
Je pense que j'en suis pas loin, mais ça fait un moment que je tourne en rond .
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.