Binary Search in a Nutshell
- Efficient method to find an element in a sorted array.
- Uses divide-and-conquer approach.
- Reduces search space by half on each step.
The Binary Search technique is used to find the position of a target element in a sorted list or array. Instead of checking every element one by one (as in linear search), binary search efficiently cuts the search space in half at every step.
This makes it significantly faster with a time complexity of O(log n) compared to O(n) for linear search.
Binary search works by repeatedly dividing the search interval in half:
low = 0 and high = n - 1.mid = (low + high) // 2.arr[mid] equals the target, return mid.arr[mid] is greater than the target, search in the left half.arr[mid] is less than the target, search in the right half.// Binary Search Pseudocode
function binarySearch(arr, target):
low = 0
high = arr.length - 1
while low <= high:
mid = Math.floor((low + high) / 2)
if arr[mid] == target:
return mid // Found
else if arr[mid] < target:
low = mid + 1 // Search right half
else:
high = mid - 1 // Search left half
return -1 // Not found
You are given a sorted array:
[10, 20, 30, 40, 50, 60, 70, 80]
Your task is to find the index of the number 60 using the Binary Search technique.
low = 0 and high = length - 1.mid = (low + high) // 2.arr[mid]:| Step | low | high | mid | arr[mid] | Action |
|---|---|---|---|---|---|
| 1 | 0 | 7 | (0+7)//2 = 3 | 40 | 40 < 60 → search in right half |
| 2 | 4 | 7 | (4+7)//2 = 5 | 60 | Found target at index 5 |
Target 60 found at index 5.
O(log n) – because we halve the search space each time.
O(1) – we use only a few variables regardless of input size, and these are going to be constant irrespective of the array size.
Binary Search is one of the most powerful and widely-used techniques in DSA. It's not just used for finding elements in arrays, but also as a strategic tool to reduce time complexity in problems involving ranges, monotonic functions, and optimization tasks.