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 : Sélectionner tout - Visualiser dans une fenêtre à part
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