Informatique TD/ TP 4.2b Tri rapide (quick sort)
Lycée Jules Ferry Cannes Page 3 sur 3 TSI2
7) Ecrire enfin la fonction tri_rapide qui prend en argument un tableau t et réalise un tri rapide de t
(on utilisera la fonction tri_rapide_rec).
def tri_rapide(T):
return tri_rapide_rec(T,0,len(T))
4 Améliorations et performances temporelles
8) Améliorer la fonction segmenter afin de :
- choisir aléatoirement le pivot (on pourra importer la fonction randint du paquet random et utiliser
la commande randint(a,b), qui choisit aléatoirement un entier dans [a, b]),
- ramèner le pivot en début de partition pour que la suite de l'algorithme convienne,
- trier le tableau et renvoyer la position finale du pivot (comme cela était déjà le cas).
def segmenter(T,i,j):
pa = randint(i,j-1)
echange(T,pa,i)
9) Afin d'évaluer l'effet de cette modification d'algorithme avec une liste triée de 980 éléments (soit
presque triée) sur la durée d'exécution, on pourra importer le module 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.
10) On pourra aussi comparer avec les temps nécessaires au tri par insertion.
5 Algorithme avec des arrays (tableaux numpy)
11) Tester si le tri en place est compatible avec les arrays numpy en testant vos fonctions avec ce type
de tableau. Si des modifications sont nécessaire enregistrer votre travail sous un autre nom puis
faire les modifications qui s'imposent.
12) Réécrire la fonction tri_rapide du cours 4.1 afin qu'il soit adapté à des tableaux numpy (ces
tableaux n'acceptent pas les méthodes .pop() et .append() ni la fonction len() ; on pourra
notamment utiliser l'indice du pivot pour l'éliminer de la liste à trier tout en le laissant en place.
Ressources : Damien BROIZAT (TSI2 Cannes)