Dans cette version du tri par insertion, le Rang de est cherché par dichotomie:
l'idée est de cerner la position d'insertion en coupant en deux l'espace de recherche à chaque appel récursif.
La figure 1.3.2 illustre ce principe.
Algorithme Rang Input: int N; int tbl[N]; int g; int d; int val; Output: int Begin int m; if (g == d) return (g); else { m=(g+d)/2; // division sur entiers if (tbl[m] > val) return (Rang(N,tbl,g,m,val)); else return (Rang(N,tbl,m+1,d,val)); } End
Complexité (comparaisons) en
.
Complexité (comparaisons) de TriInsertion en
.
Complexité (accès) de TriInsertion en
.