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

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

TypeScript Алгоритми

while + галуження

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

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

Вихідний код

function bsearch(a: number[], key: number): number {
    let lo = 0, hi = a.length - 1;
    while (lo <= hi) {
        const mid = Math.floor((lo + hi) / 2);
        if (a[mid] === key) return mid;
        else if (a[mid] < key) lo = mid + 1;
        else hi = mid - 1;
    }
    return -1;
}