ПоискБазовый8 мин чтения
Бинарный поиск
Поиск в отсортированном массиве, который на каждом шаге исключает половину диапазона.
Обновлено 19 июля 2026
На этой странице
ИНТУИЦИЯ
Понять идею до написания кода
Сравните цель со средним элементом. Если цель меньше — продолжайте только в левой половине, если больше — в правой. Поэтому диапазон поиска уменьшается примерно вдвое после каждого сравнения.
Запомните главное
Алгоритм работает корректно только тогда, когда данные отсортированы по тому же правилу сравнения.
ПОШАГОВО
Как это работает
10
41
72
103
134
165
196
227
258
АНАЛИЗ
Время и память
Лучший случайO(1)
Средний случайO(log n)
Худший случайO(log n)
Доп. памятьO(1) итеративно
Оценка зависит от модели данных и выбранной реализации. Здесь указаны стандартные оценки для описанного варианта алгоритма.
РЕАЛИЗАЦИЯ
Код без скрытых шагов
def binary_search(items, target):
left, right = 0, len(items) - 1
while left <= right:
mid = left + (right - left) // 2
if items[mid] == target:
return mid
if items[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1ПРОВЕРКА ПОНИМАНИЯ
Частые ошибки
01
Запускать поиск на неотсортированных данных.
02
Неправильно обновлять границы и получать бесконечный цикл.
03
Путать поиск любого совпадения с поиском первой или последней позиции.