您的位置:首页 > 其它

二分查找(迭代和递归)

2016-09-27 15:42 176 查看
二分查找大一的时候写过,现在有些忘了,再写一遍备用。

迭代版本

#include<iostream>
#include<algorithm>
using namespace std;
int binsearch(int a[],int n,int key){
int l=0,r=n-1;
while(l<=r){
int m=(l+r)/2;
if(a[m]==key)
return m;
else if(a[m]>key)
r=m-1;
else
l=m+1;
}
return -1;
}
int main(){
int a[5]={5,3,8,7,4};
sort(a,a+5);
cout<<binsearch(a,5,3);
return 0;
}


递归版本

#include<iostream>
#include<algorithm>
using namespace std;
int bs(int s[],int l,int h,int key){
int m;
if(l>h)
return -1;
else{
m=(l+h)/2;
if(key==s[m])
return m;
else if(key<s[m])
return bs(s,l,m-1,key);
else
return bs(s,m+1,h,key);
}
}
int main(){
int s[5]={1,7,5,3,8};
sort(s,s+5);
int l=0;
int n=5;
int h=n-1;
cout<<bs(s,l,h,8);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二分查找 迭代 递归