二分查找(迭代和递归)

来源:互联网 发布:淘宝降价提醒"管理器 编辑:程序博客网 时间:2024/05/16 11:55

二分查找大一的时候写过,现在有些忘了,再写一遍备用。

迭代版本

#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;}
0 0
原创粉丝点击