Loading...
Binary Search repeatedly halves the search interval on sorted or monotonic domains. Its tight logarithmic complexity underpins numerous higher-level algorithms and optimization strategies.
Recurrence: T(n) = T(n/2) + O(1) → O(log n).
Invariant: Target (if present) always lies within [lo, hi].
Termination: Interval shrinks until found or lo > hi.
1function binarySearch(arr, target):2 lo = 0; hi = length(arr) - 13 while lo <= hi:4 mid = (lo + hi) // 25 if arr[mid] == target: return mid6 if arr[mid] < target: lo = mid + 1 else hi = mid - 17 return -1
1def binary_search(arr, target):2 lo, hi = 0, len(arr) - 13 while lo <= hi:4 mid = (lo + hi) // 25 if arr[mid] == target:6 return mid7 if arr[mid] < target:8 lo = mid + 19 else:10 hi = mid - 111 return -1
1export function binarySearch(arr: number[], target: number): number {2 let lo = 0, hi = arr.length - 1;3 while (lo <= hi) {4 const mid = (lo + hi) >> 1;5 if (arr[mid] === target) return mid;6 if (arr[mid] < target) lo = mid + 1; else hi = mid - 1;7 }8 return -1;9}