Найти все элементы массива равные Х, используя бинарный поиск. Х вводится с клавиатуры , на паскале, методом " Поиск элементов в одномерном массиве".

24 Ноя 2019 в 19:44
135 +1
0
Ответы
1

Приведу пример реализации на языке Pascal:

program BinarySearch;
const
N = 10;
var
arr: array[1..N] of Integer;
x, i, left, right, mid: Integer;
begin
// Заполнение массива
writeln('Введите элементы массива:');
for i := 1 to N do
readln(arr[i]);
// Сортировка массива
for i := 1 to N - 1 do
for j := i + 1 to N do
if arr[i] > arr[j] then
begin
arr[i] := arr[i] xor arr[j];
arr[j] := arr[i] xor arr[j];
arr[i] := arr[i] xor arr[j];
end;
// Ввод числа X
writeln('Введите число X:');
readln(x);
// Бинарный поиск элементов равных X
left := 1;
right := N;
while left <= right do
begin
mid := (left + right) div 2;
if arr[mid] = x then
begin
// Поиск элементов равных X
writeln('Элемент равный X найден в позиции ', mid);
// Поиск дополнительных элементов равных X слева
i := mid - 1;
while (i >= 1) and (arr[i] = x) do
begin
writeln('Элемент равный X найден в позиции ', i);
i := i - 1;
end;
// Поиск дополнительных элементов равных X справа
i := mid + 1;
while (i <= N) and (arr[i] = x) do
begin
writeln('Элемент равный X найден в позиции ', i);
i := i + 1;
end;
break;
end
else if arr[mid] < x then
left := mid + 1
else
right := mid - 1;
end;
// Если элементов равных X не найдено
if left > right then
writeln('Элемент равный X не найден');
end.

В этом примере программа сначала запрашивает элементы массива у пользователя, затем сортирует массив, затем запрашивает число X и выполняет бинарный поиск элементов равных X в отсортированном массиве. Если элемент равный X найден, программа находит все элементы равные X в массиве.

19 Апр в 01:00
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 588 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир