public static Integer recursiveBinarySearch(Integer[] array, int startIndex, int endIndex, int number) {
if (startIndex > endIndex) {
return null;
}
int midIndex = (startIndex + endIndex) / 2;
if (array[midIndex] == number) {
return midIndex;
} else if (array[midIndex] > number) {
return recursiveBinarySearch(array, 0, midIndex - 1, number);
} else if (array[midIndex] < number) {
return recursiveBinarySearch(array, midIndex + 1, endIndex, number);
} else {
return null;
}
}
public static int search(Integer[] data, int number) {
int low;
int high;
int mid;
if (data == null)
return -1;
low = 0;
high = data.length - 1;
while (low <= high) {
mid = (low + high) / 2;
if (number < data[mid]) {
high = mid - 1;
} else if (number > data[mid]) {
low = mid + 1;
} else if (number == data[mid]) {
return mid;
}
}
return -1;
}