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
.