二分查找是一种要求数组元素在又序情况下的一种查找算法,平均时间复杂为log(n)
因为数据元素都是有序的,每次比较都可以排除一半的元素
用递归和非递归都可以很好的实现,其实这里的递归和非递归没什么区别
int Find(int a[],int k,int s,int n){
int l=(s+n);
while(s<=n){
l=(s+n)/2;
if(a[l]<k){
s=l+1;
}
else if(a[l]>k){
n=l-1;
}
else {
return l;
}
}
return -1;
}
int Find(int a[],int k,int s,int n){
int r=(s+n)/2;
if(a[r]<k){
return Find(a,k,r+1,n);
}
else if(a[r]>k){
return Find(a,k,s,r-1);
}
else{
return r;
}
return -1;
}
二分查找的递归和非递归
最新推荐文章于 2024-03-25 08:00:00 发布