Бинарный поиск

Нахождение номера элемента массива при помощи бинарного поиска. Алгоритм сделан под отсортированный массив по убыванию.

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.
Поделиться:

Похожие статьи: