|
Recherche dichotomique : version itérative |
|
|
|
Written by Administrator
|
|
L'algorithme de recherche séquentielle n'utilise comme information que le test d'égalité sur les valeurs des cases du tableau, avec deux résultats possibles : égalité, non-égalité. Supposons maintenant que les valeurs d'une table soient rangées par ordre croissant. On peut alors réaliser un test avec trois résultats : égalité, inférieur, supérieur. L'idée est de comparer la valeur recherchée avec la valeur du milieu du tableau ; si la elle est plus petite, on continue la recherche dans la première partie du tableau ; si elle est plus grande, on continue dans la seconde partie du tableau En Pascal : program search; const max =100; var t:array[0..max-1] of integer; x,a,b,indice,i : integer;
begin readln(x); for i:=0 to max-1 do readln(t[i]); a:=0; b:=max-1; indice:=(a+b) div 2; While (t[indice]<>x ) do begin if x<t[indice] then b:=indice-1 else a:=indice+1; indice:=(a+b) div 2 end; writeln(indice); end.
|