public class BSearch {
private static int bSearch(int[] array, int n, int value) {
int low = 0;
int high = n - 1;
while (low <= high) {
int mid = low + ((high - low) >> 1);
if (array[mid] >= value) {
high = mid - 1;
} else {
low = mid + 1;
}
}
if (low < n && array[low] == value) {
return low;
}
return -1;
}
private static int bSearch(int[] array, int value, int low, int high) {
if (low <= high) {
int mid = low + ((high - low) >> 1);
if (array[mid] >= value) {
return bSearch(array, value, low, mid - 1);
} else {
return bSearch(array, value, mid + 1, high);
}
}
if (low < array.length && array[low] == value) {
return low;
}
return -1;
}
public static void main(String[] args) {
int[] array = {1, 3, 6, 11, 12, 44, 44, 44, 44, 44, 66, 77, 99};
System.out.println(bSearch(array, 44, 0, array.length - 1));
System.out.println(bSearch(array, array.length, 44));
}
}