Python Schoolby trefilov
Шаг 1 из 3+140 XP

Алгоритм: бинарный поиск

O(log n) на отсортированном массиве.

Идея

Дели пополам: если середина мала — ищи справа, велика — слева.

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