Найти в Дзене
markuskrash

Как угадать любое число за наименьшее число вопросов

Оглавление

Алгоритм

При решении такой задачи используется бинарный или же двоичный поиск. Его суть заключается в том, что у нас есть две границы l = 1, r = n. Далее мы задаем вопрос: "Загаданное число x больше ли середины от суммы левой и правой границ", то есть mid = (l + r) / 2. Далее если mid оказалось больше x, то мы сдвигаем правую границу на место середины, то есть r = mid, иначе сдвигаем левую l = mid. Так мы продолжаем до тех пор, пока границы не станут равны. Вот и все.

Количество вопросов или же сложности алгоритма

Такой алгоритм работает за сложность O(log n), то есть чтобы отгадать число в диапазоне от 1 до n, нужно сделать log n вопросов. К примеру, если n = 1000, то вам понадобится 10 вопросов, а если n = 100, то всего 7.

Отличие линейного поиска от бинарного

Если бы мы искали число в диапазоне от 1 до n линейным поиском, нам бы потребовалось n вопросов, а бинарным всего log n.