Бинарный поиск
Категория: Delphi/Pascal
2011-09-24 19:26:32
Нахождение номера элемента массива при помощи бинарного поиска. Алгоритм сделан под отсортированный массив по убыванию.
code: #pascal
program massiv; uses crt; const n=10; var a:array[1..n] of integer; Q:integer; { образец поиска} verh:integer; { верхняя граница } niz: integer; { нижняя граница } sred:integer; {средний элемент } found:boolean; { TRUE ? есть ли в массиве число} i:integer; begin writeln('введите число dla poiska Q'); readln(Q); {Zapolnaem massiv} for i:= 1 to n do begin write('Vvedite ',i,' element massiva'); readln(a[i]); end; {Chitaem} begin niz:=1; verh:=n; repeat sred:=((niz+verh) div 2)+1; if a[sred] = q then found:=TRUE else if q < a[sred] then niz:=sred-1 else verh:=sred+1; until (verh < niz) or found=true; if found then writeln('совпадает с элементом под номером',sred) else writeln('такого элемента в массиве нет'); readln; end; end.
Поделиться: