Используя двоичный поиск, определить есть ли в массиве равное число - Pascal ABC
Формулировка задачи:
заполнить массив случайными числами и отсортировать его ввести число x использовать двоичный поиск определить есть ли в массиве равное число х
Решение задачи: «Используя двоичный поиск, определить есть ли в массиве равное число»
textual
Листинг программы
const nmax=100; var a:array[1..nmax] of integer; n,i,j,x,r,l,c:integer; begin //создание исходного массива repeat write('Введите размер массива от 2 до ',nmax,' n='); readln(n); until n in [1..nmax]; writeln('Исходный массив'); for i:=1 to n do begin a[i]:=1+random(100); write(a[i]:4); end; writeln; //сортировка for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin x:=a[i]; a[i]:=a[j]; a[j]:=x; end; //бинарный поиск write('Введите число для поиска x='); readln(x); l:=1; r:=n; j:=0; while (l<=r)and (j=0) do begin c:=(l+r) div 2; if x<a[c] then r:=c-1 else if x>a[c] then l:=c+1 else j:=1; end; if j=0 then write('Числа, равного ',x,' в массиве нет') else write('Число, равное ',x,' в массиве есть') end.
Объяснение кода листинга программы
- Создается переменная nmax, которая определяет максимальное количество элементов в массиве.
- Создается переменная a, которая представляет собой массив для хранения целых чисел.
- Определяются переменные n, i, j, x, r, l, c, которые будут использоваться в процессе выполнения программы.
- Выполняется цикл, который запрашивает у пользователя размер массива от 2 до nmax и сохраняет его в переменной n.
- Выполняется цикл, который заполняет массив a случайными числами от 1 до 100.
- Выполняется сортировка массива a в порядке возрастания.
- Выполняется бинарный поиск числа x в массиве a.
- Инициализируются переменные l, r и j для использования в цикле бинарного поиска.
- Пока l меньше или равно r и j равно 0, выполняется цикл, который делит массив пополам и проверяет, меньше ли x первого элемента, больше ли x второго или равен x третьему.
- Если x меньше первого элемента, то r сдвигается на одну позицию влево.
- Если x больше третьего элемента, то l сдвигается на одну позицию вправо.
- Если x равен второму элементу, то j сдвигается на одну позицию вправо.
- Проверяется, было ли найдено число, равное x.
- Если цикл закончился и j равно 0, выводится сообщение о том, что число, равное x, в массиве отсутствует.
- Если цикл закончился и j не равно 0, выводится сообщение о том, что число, равное x, в массиве есть.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д