Бинарный поиск

Поиск в отсортированном массиве делением пополам.

СигнатураO(log n)

Бинарный поиск работает только на отсортированном массиве. Он сравнивает искомое значение со средним элементом и каждый раз отбрасывает половину диапазона, поэтому число шагов растёт логарифмически.

Сложность: время O(log n); память: O(1) для итеративной версии, O(log n) для рекурсивной. Применяйте, когда данные отсортированы и поиск выполняется часто.

def binary_search(a, target):
    lo, hi = 0, len(a) - 1
    while lo <= hi:
        mid = (lo + hi) // 2
        if a[mid] == target:
            return mid
        if a[mid] < target:
            lo = mid + 1
        else:
            hi = mid - 1
    return -1

print(binary_search([1, 3, 5, 7, 9], 7))  # 3
← Все записи: Алгоритмы и структуры данных
Поддержать проект