Бинарный поиск в упорядоченном массиве — Pascal(Паскаль)

program poisk1;
var
     a:array[1..9] of integer; { массив целых }
     obrazec:integer; { образец для поиска }
     sred,verh,niz:integer;  { номера среднего, верхнего и нижнего}
                               { эл-тов массива}
     naiden:boolean;{ признак совпадения с образцом }
     n:integer; { счетчик сравнений с образцом }
     i:integer;
begin
     { ввод 9 целых чисел }
     writeln('Бинарный поиск в массиве.');
     write('Введите 9 целых в одной строке через пробел '); 
	writeln('и нажмите <Enter>');
     for i:=1 to 9 do read(a[i]);
     { здесь числа в массив введены }
     writeln('Введите образец для поиска (целое число) ');
     readln(obrazec);
     { бинарный поиск }
     verh:=1;
     niz:=9;
     naiden:=FALSE;
     n:=0;
     writeln(' verh  niz   sred');
     repeat
          sred:=(niz-verh) div 2+verh;
          writeln(verh:5,niz:5,sred:5);
          n:=n+1;
          if a[sred]=obrazec then naiden:=TRUE
          else begin
               if obrazec<a[sred]
                    then niz:=sred-1
                    else verh:=sred+1;
          end;
     until (verh>niz) or naiden;
     if naiden
          then write('Совпадение с элементом номер ',
                      sred,'. Выполнено ',n,' сравнений.')
          else writeln('Образец в массиве не найден.');
        readln;
end.

Leave a Comment

+ 12 = 20