Дан массив А[7, 8, 12, 16, 18, 20, 30, 38, 49, 50], отсортированный в порядке неубывания...

0 голосов
106 просмотров

Дан массив А[7, 8, 12, 16, 18, 20, 30, 38, 49, 50], отсортированный в порядке неубывания чисел. Сколько шагов необходимо для нахождения целого числа x=18 методом бинарного поиска?


Информатика (17 баллов) | 106 просмотров
0

отсортированный в порядке неубывания чисел. Да он и так в порядке неубывания. 5 шагов необходимо сделать точнее цикл, который только на 5 кругу определит x=18

Дан 1 ответ
0 голосов
Правильный ответ

Допустим, что мы делим массив на две части при помощи операции div, т.е. целочисленного деления с недостатком.
1й шаг. [7,8,12,16,18] и [20,30,38,49,50]. Выбираем первый интервал.
шаг. [7,8] и [12,16,18]. Выбираем второй интервал.
3й шаг.
[12] и [16,18]. Выбираем второй интервал.
4й шаг
[16] и [18]. Выбираем второй интервал, поиск завершен.

(142k баллов)
0

эм.. а как программа определит в какой части находилось число 18?

0

Проверив последний элемент

0

Т.е. либо проверяем последний элемент первого интервала, либо первый элемент второго.

0

В нашем случае проверив 18 улучшенный алгоритм сразу бы остановился.

0

Но стандартный проверяет на "меньше либо равно"

0

а разве сравнение не будет считаться за шаг?

0

Шаг состоит из сравнения и принятия решения по нему. Т.е. по результатам сравнения выбирается нужный интервал и разделяется посерединею Все это и есть один шаг.

0

запомни) спасибо)

0

В бинарном поиске до 2 элементов - 1 шаг, до 4 - два, до 8 - 3, до 16 - 14, до 32 -5 и т.д. по степеням двойки.

0

Описка: 16 - 4