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

24 Ноя 2019 в 19:44
150 +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 Апр 2024 в 01:00
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир