algorithmique (école d'ingénieur) · Chapitre 14 · Exercice de TD
Pire cas du tri rapide
Les tris · niveau 2
Énoncé
On remplace le pivot aléatoire du tri rapide par la dernière case de la zone. Mesurer le temps de calcul sur des tableaux déjà triés de tailles , et . Que constate-t-on ? Que se passe-t-il pour ? Expliquer.
Corrigé
14.5 trie n=10000 : 8,3 ms
14.5 trie n=20000 : 33,0 ms
14.5 trie n=40000 : 131,4 ms
14.5 n=100000 : StackOverflowError
Quand double, le temps est multiplié par : le temps de calcul est quadratique. Sur un tableau trié, le pivot (la dernière case) est le maximum de la zone : la segmentation de fait comparaisons et laisse une zone de cases à gauche et une zone vide à droite. Le temps vérifie , soit (exercice 13.3).
nom : T
cases : 8
colorier : 7
pointeurs : g=0 d=8
zone : 0..6 d - g - 1 cases
legende : tableau trié : le pivot T[d-1] est le maximum, la zone droite est vide
Pour , la profondeur de récursivité atteint : la pile d'appels de Java déborde (StackOverflowError). Le pivot aléatoire rend ce comportement extrêmement improbable ; on peut aussi n'appeler récursivement que la plus petite des deux zones et traiter l'autre par une boucle, ce qui borne la profondeur par .
100 % gratuit
La suite du chapitre est sur Adloun
- 10 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.