Нахождение номера элемента массива при помощи бинарного поиска. Алгоритм сделан под отсортированный массив по убыванию — 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.

Leave a Comment

+ 31 = 33