Сортировка и бинарный поиск - Pascal ABC
Формулировка задачи:
заполнить массив случайными числами и ввести число и отсортировать его. ввести число x используя двоичный поиск. определите есть ли в массиве число равное X ,если такого числа нет вывести число ближайшее к x
пример
массив:
1 4 7 3 9 2 4 5 2
после отсортировки:
1 2 2 3 4 4 5 12 19
введите число X:
12
число 12 найдено
пример
массив:
1 4 7 3 9 2 4 5 2
после отсортировки:
1 2 2 3 4 4 5 12 19
введите число X:
11
число 11 не найдено. Ближайшее число 12
Решение задачи: «Сортировка и бинарный поиск»
textual
Листинг программы
const n=10; var a:array [1..n] of integer; j,i,x,c,m,l,r:integer; begin writeln('Массив: '); for i:=1 to n do begin a[i]:=1+random(30); write(a[i]:3); end; writeln; for i:= 1 to n-1 do for j:= 1 to n-1 do if a[j]>a[j+1] then begin m:=a[j]; a[j]:=a[j+1]; a[j+1]:=m; end; writeln('Отсортированный массив: '); for i:=1 to n do write(a[i]:3); writeln; writeln('Введите число Х:'); readln(x); l:=1;r:=n; for i:=1 to n do begin c:=(l+r) div 2; if a[c]>x then r:=c else if a[c]<x then l:=c else l:=r; end; if l<>r then begin write('Число ',x,' не найдено, ближайшее число '); if abs(a[r]-x)<abs(a[l]-x) then write(a[r]) else write(a[l]); end else write('Число ',x,' найдено'); end.
Объяснение кода листинга программы
- Создается константа n, которая определяет количество элементов в массиве.
- Создается переменная a, которая представляет собой массив из n элементов типа integer.
- Создаются переменные j, i, x, c, m и l, которые будут использоваться для сортировки и поиска элемента в массиве.
- Выводится сообщение с описанием массива.
- Для каждого i от 1 до n выполняется следующая последовательность действий:
- a[i] присваивается значение, равное сумме случайного числа от 1 до 30.
- Значение a[i] выводится на экран.
- Выполняется сортировка массива методом пузырька.
- Выводится отсортированный массив.
- Запрашивается число Х.
- Вычисляются границы диапазона поиска от 1 до n.
- Для каждого i от 1 до n выполняется следующая последовательность действий:
- Вычисляется средний индекс c.
- Если a[c] больше Х, то r устанавливается равным c.
- Если a[c] меньше Х, то l устанавливается равным c.
- Если a[c] равно Х, то l устанавливается равным r.
- Проверяется, были ли найдены все значения Х в массиве.
- Если l и r не равны, то выводится сообщение о том, что число Х не найдено.
- Если l и r равны, то выводится сообщение о том, что число Х найдено.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д