Attention ! cette page va être migrée vers https://lwh-21.github.io/Algos/
C'est le tri du joueur de cartes. On fait comme si les éléments à trier étaient donnés un par un, le premier élément constituant, à lui tout seul, une liste triée de longueur 1. On range ensuite le second élément pour constituer une liste triée de longueur 2, puis on range le troisième élément pour avoir une liste triée de longueur 3 et ainsi de suite...
Le principe du tri par insertion est donc d'insérer à la nième itération le nième élément à la bonne place.
L'animation ci-après illustre le fonctionnement de ce tri :
Si on utilise le tri par insertion pour résoudre le petit jeu de la page précédente, on a :
Les graphiques ci-dessous montrent la progression du nombre d'opérations en fonction du nombre d'éléments à trier.
Dans le meilleur des cas, avec des données déjà triées, l'algorithme effectura seulement n comparaisons. Sa complexité dans le meilleur des cas est donc en Θ(n).
Dans le pire des cas, avec des données triées à l'envers, les parcours successifs du tableau imposent d'effectuer (n-1)+(n-2)+(n-3)..+1 comparaisons et échanges, soit (n2-n)/2. On a donc une complexité dans le pire des cas du tri par insertion en Θ(n2).
Si tous les éléments de la série à trier sont distincts et que toutes leurs permutations sont équiprobables, la complexité en moyenne de l'algorithme est de l'ordre de (n2-n)/4 comparaisons et échanges. La complexité en moyenne du tri par insertion est donc également en Θ(n2)
On notera également une propriété importante du tri par insertion : contrairement à celle d'autres méthodes, son efficacité est meilleure si le tableau initial possède un certain ordre. L'algorithme tirera en effet parti de tout ordre partiel présent dans le tableau. Jointe à la simplicité de l'algorithme, cette propriété le désigne tout naturellement pour "finir le travail" de méthodes plus ambitieuses comme le tri rapide
Suivant : algorithme du tri par sélection