Plus pr´ecis´ement, `a la fin de (1) et (2) i pointe sur la premi`ere occurrence du
tableau apr`es gauche plus grande que pivot et j sur la plus grande occurrence
du tableau avant droite plus petite que pivot.
Si i<j, toute les valeurs n’ont pas ´et´e regard´ees et on peu ´echanger tab[i]
et tab[j] (´etape (3)) pour agrandir notre recherche (apr`es l’´echange, tous les
´el´ements plus petit que i sont <que pivot et tous les ´el´ements plus grand que j
sont >pivot. Avant l’´echange tab[i]=>pivot et tab[j]<=pivot). On peut donc
r´eit´erer les ´etapes (1) et (2).
Une fois que i>=j, tous les ´el´ements entre gauche et droite ont ´et´e vus, et,
tous les ´el´ements de gauche `a i-1 sont plus petit ou ´egaux `a pivot et tous les
´el´ements entre i et droite sont plus grand ou ´egaux `a pivot. L’´echange entre
tab[i] et tab[droite] (´etape 5) nous assure donc que la place de la valeur pivot
restera inchang´ee `a la suite du tri (c’est `a dire que l’on peut trouver un tri du
tableau o`u la valeur de tab[i] sera pivot).
Il ne nous reste plus qu’`a trier les bouts de tableaux restant, c’est `a dire les
´el´ements entre gauche et i-1 (´etape 6) et ceux entre i+1 et droite (´etape 7).
2.2
Cette m´ethode de tri est-elle stable ?
Non, car la position finale du pivot ne peut ˆetre connue et donc il n’y a
aucune raison que la m´ethode soit stable.
2.3
Quelle est la complexit´e (au pire) de cet algorithme ?
`
A chaque ´etape, un ´el´ement est tri´e. Tri Rapide est donc lanc´e au maximum
nfois. La complexit´e de la boucle “tant que stop=Faux” incr´emente deux
compteur i et j, et s’arrˆete lorsque i≥j. Le nombre d’op´erations est donc de
l’ordre de O(n). La complexit´e finale de l’algorithme est donc en O(n2).
2.4
Complexit´e moyenne
La formule de r´ecurrence de la complexit´e moyenne peut ˆetre construite
comme suit : C(N) = “op´erations de la boucle tant que stop=Faux” + “moyenne
du nombre d’op´erations effectu´e par les deux appels r´ecursifs”
La premi`ere partie est lin´eaire, on peut donc la borner par p.N o`u p est une
constante quelque soit N.
Pour la deuxi`eme partie, la taille des tableaux qui vont ˆetre pass´es aux appels
r´ecursifs n’est pas connue, et d´epend de la position finale du pivot. Si c’est la
position kdu tableau qui est la position finale du pivot, le nombre d’op´erations
effectu´es par ces appels est C(k-1) + C(N-k). Chaque case du tableau ayant
une probabilit´e 1/N d’ˆetre la position finale du tableau, donc le nombre moyen
d’op´erations est : (1/N )∗P1≤k≤N(C(k−1) + C(N−k)).
5