← Усі приклади

Двійковий пошук

Python Алгоритми

while + галуження

Блок-схема за ДСТУ

ТакТакНіТакНіНіПочатокВвід a, keylo, hi = 0, len(a) - 1lo <= himid = (lo + hi) // 2a[mid] == keyПовернути midКінецьa[mid] < keylo = mid + 1hi = mid - 1Повернути -1КінецьРисунок 1 — bsearch

Вихідний код

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