Le tri par insertion est très efficace lorsqu'il fonctionne sur des données presque triées, c'est-à-dire qu'il peut atteindre l'efficacité du tri linéaire.
Mais le tri par insertion est généralement inefficace car le tri par insertion ne peut déplacer les données qu'un bit à la fois.
Le tri Hill doit son nom à son concepteur, Donald Shell, et l'algorithme a été publié en 1959. Certains manuels et manuels de référence plus anciens ont nommé l'algorithme Shell-Metzner, qui contient le nom de Marlene Metzner Norton, mais selon Metzner elle-même, "Je n'ai rien fait pour cet algorithme et mon nom ne devrait pas apparaître dans l'algorithme". >
L'idée de base du tri Hill : prenez d'abord un entier d1 inférieur à n comme premier incrément, et divisez tous les enregistrements du fichier en groupes d1. Tous les enregistrements dont la distance est un multiple de d1 sont placés dans le même groupe. Effectuez d'abord un tri par insertion directe dans chaque groupe ; puis prenez le deuxième incrément d2 < d1 et répétez le regroupement et le tri ci-dessus jusqu'à ce que l'incrément dt = 1 (dt < dt-l< … < d2 < d1), qui c'est-à-dire jusqu'à ce que tous les enregistrements soient placés dans le même groupe pour le tri par insertion directe.
Exemple 1 :
Le code est le suivant :