Код IT
← Каталог

Pascal / Free Pascal — типовые программы — 3.2. Бинарный поиск в отсортированном массиве

Фрагмент из «Pascal / Free Pascal — типовые программы»: 3.2. Бинарный поиск в отсортированном массиве.

Pascal main.pas
program BinarySearch;

function Find(a: array of integer; n, key: integer): integer;
var
  lo, hi, mid: integer;
begin
  lo := 0;
  hi := n - 1;
  while lo <= hi do
  begin
    mid := (lo + hi) div 2;
    if a[mid] = key then
    begin
      Find := mid;
      exit;
    end;
    if a[mid] < key then
      lo := mid + 1
    else
      hi := mid - 1;
  end;
  Find := -1;
end;

var
  n, i, key, pos: integer;
  a: array of integer;

begin
  ReadLn(n);
  SetLength(a, n);
  for i := 0 to n - 1 do
    Read(a[i]);
  ReadLn;
  ReadLn(key);
  pos := Find(a, n, key);
  WriteLn(pos);
end.
program BinarySearch;

function Find(a: array of integer; n, key: integer): integer;
var
  lo, hi, mid: integer;
begin
  lo := 0;
  hi := n - 1;
  while lo <= hi do
  begin
    mid := (lo + hi) div 2;
    if a[mid] = key then
    begin
      Find := mid;
      exit;
    end;
    if a[mid] < key then
      lo := mid + 1
    else
      hi := mid - 1;
  end;
  Find := -1;
end;

var
  n, i, key, pos: integer;
  a: array of integer;

begin
  ReadLn(n);
  SetLength(a, n);
  for i := 0 to n - 1 do
    Read(a[i]);
  ReadLn;
  ReadLn(key);
  pos := Find(a, n, key);
  WriteLn(pos);
end.