Tri rapide
École de technologie supérieure |
|
Le tri rapide en action |
INF155 Introduction à la programmation |
#define TAILLE_CRITIQUE_QUICK 10 |
Lorsque la taille restante est inférieure ou égale à 10, on utilise un tri plus simple: le tri par insertion. Cependant, dans l'animation ci-dessous, j'ai poursuivi le tri rapide jusqu'à la taille 2. |
double x = T[(left+right)/2]; |
Par cette instruction, on va chercher une valeur qui sera utilisée comme pivot. |
do { while (T[i] < x ) i++; while ( x < tablo[k]) k--; if (i <= k) { |
Voilà le coeur du tri rapide. On fait remonter l'indice de gauche "i" jusqu'à ce que le contenu du tableau soit supérieur ou égal à la valeur pivot. On fait ensuite descendre l'indice de droite "j" jusqu'à ce que le contenu du tableau soit inférieur ou égal à la valeur pivot. On échange ensuite les deux valeurs avec "permute" afin de retrouver la situation suivante: la valeur plus petite que le pivot se retrouve à gauche tandis que la valeur plus grande que le pivot se retrouve à droite. On répète ce processus jusqu'à ce que les deux indices se croisent. |
if (left < k) quick(T,left, k); if (i < right) quick(T,i, right); } |
Que doit-on faire des deux morceaux qui restent? Les trier bien sûr. On appelle à nouveau le tri rapide sur la partie gauche puis, sur la partie droite. |