二分查找非递归形式:
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;
}
}
本文详细介绍了二分查找算法的两种实现方式:非递归形式和递归形式。非递归形式通过循环逐步缩小查找范围直至找到目标或范围为空。递归形式则采用分而治之的策略,将问题分解为子问题不断逼近解决方案。
928

被折叠的 条评论
为什么被折叠?



