<span style="font-size:18px;">/**
* 二分搜索时,数组必须有序
* @author xxxu
*
*/
public class BinarySearch {
/*
* 递归版本的二分搜索
*/
public int search(int[] a,int lo,int hi,int find){
if(a==null||lo>hi){
return -1;
}else{
int mid=(lo+hi)/2;
if(find<a[mid]){
return search(a,lo,mid-1,find);
}else if(find>a[mid]){
return search(a,mid+1,hi,find);
}else{
return mid;
}
}
}
/*
* 循环版本的二分搜索
*/
public int searchWhile(int[] a,int lo,int hi,int find){
if(a==null||lo>hi){
return -1;
}else{
while(lo<=hi){
int mid=(lo+hi)/2;
if(a[mid]<find){
lo=mid+1;
}else if(a[mid]>find){
hi=mid-1;
}else{
return mid;
}
}
}
return -1;
}
}</span>
二分搜索
最新推荐文章于 2023-01-07 20:29:55 发布