2.4 Étude sur un exemple
Voici les étapes de l’exécution du tri par insertion sur le tableau T=[9,6,1,4,8] Le tableau est
représenté au début et à la fin de chaque itération.
i= 1 T=[9,6,1,4,8] →T=[6,9,1,4,8]
i= 2 T=[6,9,1,4,8] →T=[1,6,9,4,8]
i= 3 T=[1,6,9,4,8] →T=[1,4,6,9,8]
i= 4 T=[1,4,6,9,8] →T=[1,4,6,8,9]
2.5 L’algorithme en langage Python
# Tri par par insertion
def tri_insertion(T):
for iin range(1,len(T)):
x=T[i]
j=i
while j>0and T[j-1]>x:
T[j]=T[j-1]
j=j-1
T[j]=x
return T
2.6 Complexité
La complexité du tri par insertion est en Θ(n2)dans le pire cas et en moyenne et en O(n)linéaire
dans le meilleur cas.
Plus précisément,
— Dans le pire cas, atteint lorsque le tableau est trié à l’envers, l’algorithme effectue de l’ordre de
n2
2affectations et comparaisons.
— Si le tableau est déjà trié, il y a n−1comparaisons et O(n)affectations.
— La complexité du tri par insertion reste linéaire si le tableau est presque trié (par exemple,
chaque élément est à une distance bornée de la position où il devrait être, ou bien tous les
éléments sauf un nombre borné sont à leur place). Dans cette situation particulière, le tri par
insertion surpasse d’autres méthodes de tri : par exemple, le tri fusion et le tri rapide (avec
choix aléatoire du pivot) sont tous les deux en Θ(nln(n)) même sur une liste triée.
3 Le tri rapide
3.1 Présentation
Le tri rapide (en anglais quicksort) est un algorithme de tri fondé sur la méthode de conception
diviser pour régner. C’est un tri en place mais non stable.
La complexité moyenne du tri rapide pour néléments est proportionnelle à nln(n), ce qui est optimal
pour un tri par comparaison, mais la complexité dans le pire des cas est quadratique. Malgré ce
désavantage théorique, c’est en pratique un des tris les plus rapides, et donc un des plus utilisés. Le
pire cas est en effet peu probable lorsque l’algorithme est correctement mis en œuvre.
Le tri rapide ne peut cependant pas tirer avantage du fait que l’entrée est déjà presque triée. Dans ce
cas particulier, il est plus avantageux d’utiliser le tri par insertion.
5