二分法查找(折半查找)的前提:必须是有序数组。
使用递归(其中,item:是你要查找的值;low:是数组的起始下标;high:是数组的最后一个下标)
public static int binarySearch(int[] arr,int item,int low,int high){
if(low>high){
throw new RuntimeException(item+"不存在于数组中");
}
int mid=(low+high)/2;
int guess=arr[mid];
if(item==guess){
return mid;
}else if(item<guess){
return binarySearch(arr,item,low,mid-1);
}else{
return binarySearch(arr,item,mid+1,high);
}
}
测试
public static void main(String[] args)
{
int []arr = {1,5,9,11,25,66,100,101};
int i = binarySearch(arr,102,0,arr.length-1);
System.out.println(i);
}