Binary Search
Binary Search
If arr[mid] == key:
Return mid // Element found
Else:
Return BinarySearch(arr, mid + 1, right, key) // Search right half
i = j = 0, k = left
While i < size(Left) and j < size(Right):
If Left[i] <= Right[j]:
arr[k] = Left[i]
i=i+1
Else:
arr[k] = Right[j]
j=j+1
k=k+1
If arr[mid] > target, search the left half (high = mid - 1).
If arr[mid] < target, search the right half (low = mid + 1).
+----------------------+
| Start |
+----------------------+
|
v
+----------------------+
| Set low = 0, |
| high = n - 1 |
+----------------------+
|
v
+----------------------+
| Is low > high? |
+----------------------+
| Yes | No |
(Not Found) v
+----------------------+
| Compute mid = (low + high) / 2 |
+----------------------+
|
v
+----------------------+
| Is arr[mid] == target? |
+----------------------+
| Yes | No |
(Found) v
+----------------------+
| Is arr[mid] > target? |
+----------------------+
| Yes | No |
(high = mid-1) (low = mid+1)
| |
v v
(Repeat process until found)