package find;
public class SimpleBinarySearch {
/**
* 数据元素不重复情况下的二分查找
* @param args
*/
public static void main(String[] args) {
int arr[] = new int[]{11,8,3,9,7,1,2,5};
System.out.println("binarySearch "+binarySearch(arr,9));
System.out.println("binarySearch2 "+binarySearch2(arr,9,0,arr.length-1));
}
/**
* 使用循环实现
* @param array
* @param value
* @return
*/
public static int binarySearch(int[] array,int value){
int low = 0;
int high = array.length-1;
while (low<=high){
int mid = (low+high)/2;
if(array[mid]==value){
return mid;
}else if(array[mid]<value){
low = mid+1;
}else {
high = mid-1;
}
}
return -1;
}
/**
* 使用递归实现
* @param array
* @param value
* @return
*/
public static int binarySearch2(int[] array,int value,int low,int high) {
if (low >= high) {
return -1;
}
int mid = (low + high) / 2;
if (array[mid] == value) {
return mid;
} else if (array[mid] > value) {
return binarySearch2(array, value, mid + 1, high);
} else {
return binarySearch2(array, value, low, mid - 1);
}
}
}