二分查找非递归形式:
public static int BinarySearch(int[] arr,int key){ //arr:输入的数组,已经有序;key:待查项
int low=0;
int high=arr.length-1;
int mid;
while(low<=high){
mid=(low+high)>>>1;
if(arr[mid]==key){
return mid;
}else if(arr[mid]<key){
low=mid+1;
}else {
high=mid-1;
}
}
return -1;
}
递归形式
public static int BinarySearchRecursion(int[] arr,int low,int high,int key){
int mid=(low+high)>>>1;
if(low<=high){
if(arr[mid]==key){
return mid;
}else if(arr[mid]>key){
return BinarySearchRecursion(arr,low,mid-1,key);
}else{
return BinarySearchRecursion(arr,mid+1,high,key);
}
}else{
return -1;
}
}