← All examples

Binary search

TypeScript Algorithms

while + branching

Flowchart (ISO 5807)

YesYesNoYesNoNoStartInput a, keylo = 0hi = a.length - 1lo <= himid = Math.floor((lo + hi) / 2)a[mid] === keyReturn midEnda[mid] < keylo = mid + 1hi = mid - 1Return -1EndFigure 1 — bsearch

Source code

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;
}