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);
}
Standard iteration version:
private static int binarySearch(int key, int[] array) {
int low = 0, high = array.length - 1;
while (low <= high) {
int mid = low + (high - low) / 2;
if (array[mid] == key) return mid;
else if (array[mid] < key) low = mid + 1;
else high = mid - 1;
}
return -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;
}