← Все вопросы
Бинарный поиск — объясните идею простыми словами
6
Знаю, что бинарный поиск быстрее линейного, но не уложу в голове как он работает. Можно на пальцах?
2 ответа
12
✓ Принятый ответ — помог автору
Работает только на отсортированном массиве. Идея как «угадай число 1–100 за минимум попыток»:
- Берёшь середину.
- Если искомое больше — отбрасываешь левую половину, меньше — правую.
- Повторяешь, пока не найдёшь.
Каждый шаг режет диапазон вдвое, поэтому из миллиона элементов хватает ~20 шагов (O(log n)).
lo, hi = 0, len(a) - 1
while lo <= hi:
mid = (lo + hi) // 2
if a[mid] == x: ...
elif a[mid] < x: lo = mid + 1
else: hi = mid - 1
Руслан Герасимов аналогия с угадай-число всё расставила по местам 🙏 · 6 месяцев назад
Игорь Михайлов важно что массив должен быть отсортирован — вот это упускал · 6 месяцев назад
2
в питоне ещё есть готовый модуль bisect, если не нужно писать руками
Ваш ответ
Войдите, чтобы ответить на вопрос.