problème avec un algo quicksort
Salut à tous,
je viens vous soumettre un problème que j'ai avec un algorithme quicksort,
Je vous présente les fonctions de partition et quicksort:
Code:
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
| int partition(int tab[], int deb, int fin)
{
int pivot = tab[deb];
int pos_pivot = deb;
for(int i =deb+1; i <=fin; i++)
{
if (tab[i] < pivot)
{
tab[i-1]=tab[i];
tab[i]=pivot;
pos_pivot++;
}
}
return pos_pivot;
}
void quicksort(int tab[],int deb,int fin)
{
int pivot;
if(deb<fin)
{
pivot = partition(tab,deb,fin);
quicksort(tab,deb,pivot-1);
quicksort(tab,pivot+1,fin);
}
} |
j'ai l'impression que mon problème est au niveau de la fonction de partition,
pour le tableau en entrée suivant:
1165
17137
14102
11300
31285
25412
23936
254
Voici ce que j'obtiens en sortie:
1165
17137
14102
11300
31285
25412
23936
254
Je sais que des codes tout fait existent sur le net, mais j'ai vraiment envie de le faire moi même,
Merci