Tri Par Insertion
Tri Par Insertion
Tri Par Insertion
En informatique, le tri par insertion est un algorithme de tri classique, que la plupart des
personnes utilisent naturellement pour trier des cartes jouer : prendre les cartes mlanges
une une sur la table, et former une main en insrant chaque carte sa place.
En gnral, le tri par insertion est beaucoup plus lent que d'autres algorithmes comme le tri
rapide (ou quicksort) et le tri fusion pour traiter de grandes squences, car sa complexit
asymptotique est quadratique.
Le tri par insertion est cependant considr comme le tri le plus efficace sur des entres de
petite taille. Il est aussi trs rapide lorsque les donnes sont dj presque tries. Pour ces
raisons, il est utilis en pratique en combinaison avec d'autres mthodes comme le tri rapide.
Sommaire
1 Description de l'algorithme
2 Exemple
3 Complexit
4 Variantes et optimisations
o 4.1 Optimisations pour les tableaux
o 4.2 Tri par insertion sur des listes
5 Combinaison avec d'autres tris
6 Voir aussi
7 Notes et rfrences
Description de l'algorithme
Illustration graphique du tri par insertion.
L'objectif d'une tape est d'insrer le i-me lment sa place parmi ceux qui prcdent. Il
faut pour cela trouver o l'lment doit tre insr en le comparant aux autres, puis dcaler les
lments afin de pouvoir effectuer l'insertion. En pratique, ces deux actions sont frquemment
effectues en une passe, qui consiste faire remonter l'lment au fur et mesure jusqu'
rencontrer un lment plus petit.
Voici une description en pseudo-code de l'algorithme prsent. Les lments du tableau T sont
numrots de 0 n-1. n est la taille du tableau.
Le tri par insertion est un tri stable (conservant l'ordre d'apparition des lments gaux) et un
tri en place (il n'utilise pas de tableau auxiliaire).
L'algorithme a la particularit d'tre online, c'est--dire qu'il peut recevoir la liste trier
lment par lment sans perdre en efficacit.
Exemple
Voici les tapes de l'excution du tri par insertion sur le tableau . Le tableau est
reprsent au dbut et la fin de chaque itration.
96148 69148
69148 16948
16948 14698
14698 14689
Complexit
La complexit du tri par insertion est (n2) dans le pire cas et en moyenne, et linaire dans le
meilleur cas. Plus prcisment :
1. Dans le pire cas, atteint lorsque le tableau est tri l'envers, l'algorithme effectue de
l'ordre de n2/2 affectations et comparaisons1 ;
2. Si les lments sont distincts et que toutes leurs permutations sont quiprobables (ie
avec une distribution uniforme), la complexit en moyenne de l'algorithme est de
l'ordre de n2/4 affectations et comparaisons1 ;
3. Si le tableau est dj tri, il y a n-1 comparaisons et au plus n affectations.
La complexit du tri par insertion reste linaire si le tableau est presque tri (par exemple,
chaque lment est une distance borne de la position o il devrait tre, ou bien tous les
lments sauf un nombre born sont leur place). Dans cette situation particulire, le tri par
insertion surpasse d'autres mthodes de tri : par exemple, le tri fusion et le tri rapide (avec
choix alatoire du pivot) sont tous les deux en mme sur une liste trie.
Variantes et optimisations
Optimisations pour les tableaux
Le principe du tri par insertion peut tre adapt des listes chanes. Dans ce cas, le
dplacement de chaque lment peut se faire en temps constant (une suppression et un ajout
dans la liste). Par contre, le nombre de comparaisons ncessaires pour trouver l'emplacement
o insrer reste de l'ordre de n/4, la mthode de recherche par dichotomie ne pouvant pas tre
applique des listes.
En pratique, les algorithmes de tri en bass sur la mthode diviser pour rgner (tri
fusion, tri rapide) sont moins efficaces que le tri par insertion sur les petites entres, en
dessous d'une taille critique K (qui dpend de l'implmentation et de la machine utilise).
Dans ce type d'algorithmes, plutt que de diviser rcursivement l'entre jusqu' avoir des
sous-problmes lmentaires de taille 1 ou 2, on peut s'arrter ds que les sous-problmes ont
une taille infrieure K et les traiter avec le tri par insertion.
Pour le cas particulier du tri rapide, une variante plus efficace existe2 :
Voir aussi
(fr) Implmentations du tri par insertion sur wikibooks.
(en) Illustration dynamique du tri par insertion [archive]
Notes et rfrences
1. a et b (en) Donald E. Knuth, The Art of Computer Programming, vol. 3 : Sorting and
Searching, 1998, 2e d. [dtail de ldition], section 5.2.1.
2. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein,
Introduction l'algorithmique, Dunod, 2002 [dtail de ldition] (ex. 7.4.5, p. 153)
[masquer]
vm
Algorithmes de tri
Introsort
Smoothsort
Timsort
Tri bulles
Tri peigne
Tri arborescent
Tri bitonique
Tri comptage
Tri de Shell
Tri fusion
Tri pair-impair
Tri par base
Tri par insertion
Tri par paquets
Tri par slection
Tri par tas
Tri rapide
Tri stupide