Сортировка и бинарный поиск - 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 равны, то выводится сообщение о том, что число Х найдено.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д