Двоичный поиск в массиве чисел - Pascal
Формулировка задачи:
Решение задачи: «Двоичный поиск в массиве чисел»
const n=8;
a:array [1..n] of integer=(-3, 2, 4, 15, 21, 48, 55, 96);
var i,l,r,m:integer;
f:boolean;
begin
writeln ('Массив');
for i:=1 to n do
write(a[i]:4);
writeln;
writeln('Вычисляемые значения');
l:=1;
r:=n;
f:=false;
while (l<=r)and not f do
begin
m:=(l+r) div 2;
write(a[m]:4);
if 3<a[m] then r:=m-1
else if 3>a[m] then l:=m+1
else f:=true;
end;
writeln;
if f then writeln('Число 3 есть в массиве')
else writeln('Числа 3 нет в массиве');
end.
Объяснение кода листинга программы
В данном коде объявлен массив a с 8 элементами, значения которых равны (-3, 2, 4, 15, 21, 48, 55, 96). Далее, объявлены переменные i, l, r, m и f, которые будут использоваться для двоичного поиска числа 3 в массиве.
Сначала выводится содержимое массива с помощью цикла for, который проходит по каждому элементу массива и выводит его значение.
Затем, переменные l и r инициализируются значениями 1 и n соответственно, а переменная f устанавливается в значение false. Это будет использоваться для определения границы диапазона поиска.
Далее, начинается цикл while, который будет выполняться до тех пор, пока l меньше или равно r и f равно false. Внутри цикла, переменная m вычисляется как среднее значение l и r, и выводится значение элемента массива с индексом m.
Затем, проверяется условие: если значение a[m] меньше 3, то r устанавливается равным m-1, иначе если значение a[m] больше 3, то l устанавливается равным m+1, и только в случае, если значение a[m] равно 3, переменная f устанавливается в значение true.
После выполнения цикла while, выводится сообщение о наличии или отсутствии числа 3 в массиве.
Таким образом, данный код выполняет двоичный поиск числа 3 в массиве и выводит результаты поиска.