package com.anuragkapur.pie.recursion;
/**
* @author anuragkapur
*/
public class BinarySearch {
/**
* Get index of x in array a. If x doesn't exist, return -1
*
* @param a
* @param x
* @return
*/
public int binarySearch(int a[], int x) {
if (a == null || a.length == 0) {
return -1;
}
return binarySearch(a, x, 0, a.length-1);
}
private int binarySearch(int[] a, int x, int start, int end) {
if (end < start) {
return -1;
} else if (end == start) {
return a[start] == x ? start : -1;
} else {
int mid = start + ((end - start) / 2);
if (a[mid] == x) {
return mid;
} else if (a[mid] < x) {
return binarySearch(a, x, mid+1, end);
} else {
return binarySearch(a, x, start, mid-1);
}
}
}
}