图片:
文本:
二分查找:
非递归实现:
public static int binarySearch(int []arr,int target){
int low=0;
int hight=arr.length-1;
int mid;
while(low<=hight){
mid=(low+hight)/2;
if(arr[mid]==target){
return mid+1;
}else if(arr[mid]<target){
low=mid+1;
}else{
hight=mid-1;
}
}
return -1;
}
递归实现:
public static int binarySearch(int []arr,int target,int low,int hight){
if(low<=hight){
int mid=(low+hight)/2;
if(target==arr[mid]){
return mid+1;
}
else if(target>arr[mid]){
return binarySearch(arr,target,mid+1,hight);
}else{
return binarySearch(arr,target,low,mid-1);
}
}
return -1;
}