Home Cours algorithmique Les algorithmes de Tri Le Tri insertion dichotomique
Bookmark and Share

Liens sponsorisés

Login Form



Le Tri insertion dichotomique Print E-mail
Written by Administrator   

Cet algorithme utilise le même prinicpe que le tri par insertion sauf qu'il rajoute une petite optimisation: on va employer une recherche dichotomique pour la recherche de la position d'insertion, bien plus efficace.     

FUNCTION posit_ins ( var v : vec_t;
                                 i : integer;
                                 x : type_element) : integer;
      VAR inf, sup, m : integer;
      BEGIN
          { le cas des extrémités }
           if x < v[1] then posit_ins := 1
          else if v[i-1] <= x then posit_ins := i
          else begin
                 { init dichotomie : les cas 1 et i sont déjà traités }
                 inf := 2; sup := i-1;
                 { recherche position m tel que v[m-1] <= x < v[m] }
                 { : variante de la dichotomie habituelle,                 }
                 {   sans le booléen trouve                                     }
                 while inf < sup do
                 begin
                   m := (inf + sup) div 2;
                   if v[m] <= x
                   then inf := m+1
                   else sup := m;
                 end;
                 posit_ins := sup;
               end;
      END;

 

Le coût 

Méthode nettement plus efficace que les autres pour vn grand :
   La recherche dichotomique sur v[1..i] est en log 2 i. L’insertion dans v[1..i]
coute en moyenne i/2. Le cout total est donc vn (log2 i + i/2).
  Par exemple avec vn = 1000, le coût est de 10 000, contre 500 000 pour les autres tris.
 

 

 

Liens sponsorisés