Algorithmes de Tri
Algorithmes de Tri
Algorithmes de Tri
El Bachir Toutaoui
2024/2025
Introduction
2 / 13
Tri à bulles
Dans le tri à bulles, on parcourt les éléments de l’ensemble de i=0
à i=n-1, en échangeant les éléments consécutifs s’ils ne sont pas
dans le bon ordre. À la fin de chaque passage, l’élément le plus
grand ”remonte”à la dernière position, ce qui le place
correctement. Ensuite, on répète ce processus en réduisant
l’intervalle, c’est-à-dire de i=0 à i=n-2, puis de i=0 à i=n-3, et
ainsi de suite, jusqu’à ce que tous les éléments soient triés. Ce
déplacement des éléments les plus grands vers la droite rappelle le
mouvement des bulles qui remontent à la surface.
3 / 13
Complexité temporelle du tri à bulles
4 / 13
Tri fusion
Principe
▶ Diviser :
Si la liste contient plus d’un élément, elle est divisée en deux
moitiés de taille à peu près égale.
▶ Régner :
Chaque moitié est triée récursivement en appliquant le tri
fusion. Cela continue jusqu’à ce que les sous-listes aient une
taille de 1 (une liste à un seul élément est triée).
▶ Fusionner :
Une fois les sous-listes triées, elles sont fusionnées en une
seule liste triée en comparant les éléments un à un, en prenant
toujours le plus petit élément parmi les deux listes à chaque
étape.
5 / 13
Tri fusion
Illustration
7 / 13
Complexité temporelle du tri fusion
▶ Pire cas :
Le tri fusion divise toujours la liste en deux sous-listes
d’environ la même taille. Comme il faut diviser la liste log2 (n)
fois, Le temps pour fusioner deux listes triées est linéaire, soit
O(n). la complexité temporelle est donc :
O(n log n)
▶ Meilleur cas :
Même si la liste est déjà triée, le tri fusion doit tout de même
effectuer toutes les étapes de division et de fusion, donc la
complexité reste :
O(n log n)
8 / 13
Tri rapide
Principe
▶ Choisir un pivot :
Un élément de la liste est choisi comme pivot. Ce choix peut
être fait de plusieurs manières (par exemple, le dernier
élément, un élément aléatoire, etc.).
▶ Diviser :
La liste est réorganisée en deux sous-listes : l’une contenant
les éléments plus petits que le pivot, et l’autre contenant les
éléments plus grands.
▶ Récursivité :
Chaque sous-liste est triée récursivement en appliquant le
même processus (choisir un pivot, diviser, etc.).
▶ Fusionner :
Les sous-listes triées sont ensuite fusionnées avec le pivot pour
former une seule liste triée.
9 / 13
Tri rapide
Illustration
10 / 13
Tri rapide
Illustration
▶ Nouvelle division :
Pivot choisi = 2 pour la sous-liste [3, 4, 2] :
[] et [3, 4].
Pivot choisi = 6 pour la sous-liste [8, 7, 6] :
[] et [8, 7].
▶ Encore diviser :
La sous-liste [3, 4] est divisée avec le pivot 4 :
[3] et [4].
La sous-liste [8, 7] est divisée avec le pivot 7 :
[7] et [8].
11 / 13
Tri rapide
Illustration
▶ Fusion finale :
Fusionner toutes les sous-listes triées avec leurs pivots
respectifs pour obtenir la liste finale triée :
[1, 2, 3, 4, 5, 6, 7, 8]
12 / 13
Complexité temporelle du tri rapide
O(n log n)
▶ Pire cas :
Si le pivot choisi est toujours le plus petit ou le plus grand
élément, la liste n’est divisée qu’en une seule partie. Cela
conduit à une complexité temporelle de :
O(n2 )
13 / 13