Напишите программу,которая считает среднее число шагов при двоичном поиске для массива из 32 элементов в диапазоне 0..100. Для поиска используйте 1000 случайных чисел в этом диапазоне. ( Паскаль)

20 Апр 2020 в 19:40
226 +1
1
Ответы
1

program BinarySearchAverageSteps;

const
maxSize = 32;
range = 100;
iterations = 1000;

type
TArray = array[1..maxSize] of Integer;

var
arr: TArray;
totalSteps: Integer;
i, j, num, steps: Integer;

function BinarySearch(arr: TArray; target: Integer): Integer;
var
left, right, mid: Integer;
begin
left := 1;
right := maxSize;
result := 0;

while left <= right do
begin
mid := (left + right) div 2;
Inc(result);

if arr[mid] = target then
Exit
else if arr[mid] < target then
left := mid + 1
else
right := mid - 1;

end;
end;

begin
Randomize;

totalSteps := 0;

for i := 1 to iterations do
begin
for j := 1 to maxSize do
arr[j] := Random(range);

// Sort the array
for j := 1 to maxSize do
begin
for num := j + 1 to maxSize do
begin
if arr[j] > arr[num] then
begin
steps := arr[j];
arr[j] := arr[num];
arr[num] := steps;
end;
end;
end;
// Binary search for a random number
num := Random(range);
steps := BinarySearch(arr, num);
totalSteps := totalSteps + steps;

end;

writeln('Average number of steps in binary search:', totalSteps div iterations);
end.

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