Binary search
TypeScript Algorithms
while + branching
Flowchart (ISO 5807)
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;
}