public class Short {
public static void main(String[] args) {
int[] a = new int[]{1,2,3,4,7,9,10,11,12,23};
System.out.println(binarySearch_r(a,0,a.length,6));
System.out.println(binarySearch_i(a, 9));
}
//二分查找,递归实现 recursion
public static int binarySearch_r(int[] a,int low,int high,int key) {
int mid = (low+high)/2;
if(low>=high)
return -1;
if(a[mid]==key)
return mid;
if(a[mid]>key)
return binarySearch_r(a,low,mid-1,key);
return binarySearch_r(a,mid+1,high,key);
}
//二分查找,迭代实现 iteration
public static int binarySearch_i(int[] a,int key) {
int low = 0,high = a.length-1;
while(low<high) {
int mid = (low+high)/2;
if(a[mid]==key)
return mid;
if(a[mid]>key) {
high = mid-1;
continue;
}
if(a[mid]<key) {
low = mid+1;
continue;
}
}
return -1;
}
}
运行结果: