Recursive version:
int recursiveBinarySearch(int[] arr, int key, int low, int high) {
if (low > high) return -1;
int mid = low + (high - low) / 2;
if (arr[mid] == key) return mid;
else if (arr[mid] < key) return recursiveBinarySearch(arr, key, mid + 1, high);
else return recursiveBinarySearch(arr, key, low, mid - 1);
}
Iterative version:
int iterationBinarySearch(int[] arr, int key) {
int low = 0, high = arr.length - 1;
while (low < high) {
int mid = low + (high - low) / 2;
if (arr[mid] == key) return mid;
else if (arr[mid] > key) high = mid;
else low = mid + 1;
}
return -1;
}