二分查找

来源:互联网 发布:淘宝花卉店铺推荐 编辑:程序博客网 时间:2024/06/05 11:13
#include <iostream>#include <cstdio>#include <vector>#include <cstring>#include <queue>using namespace std;const int Max=10;int bfind(int *a,int n,int Max){    int lef=0,rig=Max-1;    int mid=(lef+rig)/2;    while(1){        if(n>a[mid]){            lef=mid+1;            mid=(lef+rig)/2;            if(rig-lef<=1){                    if(a[rig]==n)                        return rig;                    else if(a[lef]==n)                        return lef;                    else if(a[mid]==n)                        return mid;                    break;                }        }        else if(n<a[mid]){                rig=mid-1;                mid=(lef+rig)/2;                if(rig-lef<=1){                    if(a[rig]==n)                        return rig;                    else if(a[lef]==n)                        return lef;                    else if(a[mid]==n)                        return mid;                    break;                }        }        else if(n==a[mid]){            return mid;        }    }        return -1;}int main(){    int a[Max]={1,2,3,4,5,6,7,8,9,10};    int n;    while(1){        scanf("%d",&n);        int i=bfind(a,n,Max);        if(i==-1)            printf("not found\n");        else            printf("weizhi:%d\n",i);    }    return 0;}
原创粉丝点击