Informatique TD/ TP 4.2 Tri rapide (quick sort)
Lycée Jules Ferry Cannes Page 2 sur 2 TSI2
4) Même question que précédemment mais avec la liste quasi-triée t=[0,1,2,4,8,15,17,23]
5) Même question que précédemment mais avec la liste quasi-triée t=[0,1,2,4,8,15,23,17] pour un
pivot pris à la médiane de la liste (comme dans le cours)
6) Conclure sur le choix du pivot probablement le plus rapide sur des listes quasi-triées.
3 Implémentation de l'algorithme
7) Copier le fichier TP4_2tri_rapide.py dans vos documents puis l'ouvrir avec Spyder.
8) Recopier dans votre cours l'algorithme correspondant et vérifier si votre traduction de la 1
ère
question était correcte.
9) Modifier la fonction tri_rapide afin de choisir aléatoirement le pivot (on pourra importer la fonction
randint de la bibliothèque random et utiliser la fonction randint(a,b), qui choisit aléatoirement un
entier dans [a, b] ATTENTION le dernier indice est inclus),
10) Afin d'évaluer l'effet de cette modification d'algorithme avec une liste triée de 1000 éléments (cela
correspond donc sensiblement à une liste presque triée) sur la durée d'exécution, on pourra
importer la fonction time du paquet time.
La fonction time() ainsi importée renvoie le temps en seconde.
En faisant la différence entre le temps après l'exécution et celui avant l'exécution, on peut
déterminer le temps mis par l'algorithme en seconde.
11) On pourra aussi comparer les temps nécessaires au tri rapide sur une liste quasi triée selon le
choix du pivot (premier élément, médian, aléatoire et dernier élément).
position du pivot
1
indice
médian aléatoire dernier indice
durée
(en s)
n=1000
0.13
n=1000
0.01
n=10000
0.04
n=10
6
6
n=1000
0.01
n=10000
0.1
n=1000
0.13
12) Comparer avec la durée nécessaire au tri d'une liste de 1000 éléments triés avec la méthode de
tri par insertion vue lors du TP précédent
0.01 et 0.5s sur une liste croissante avec 106
termes.
13) Vérifier si les durées observées sont compatibles avec les complexités étudiées en cours
(quadratique dans le pire des cas ; quasi-linéaire dans le meilleur des cas ; quasi-linéaire en
moyenne sur des listes aléatoires)
tr(t) tr([1,2,4,8,15,23,17]) tr([2,4,8,15,23,17]) tr([23])
tr(t)
tr([0,1,2,4])
tr([0,1]) tr([0])
tr([4])
tr([15,23,17]) tr([15,17]) tr([15])