二分查找

来源:互联网 发布:读电子书软件 编辑:程序博客网 时间:2024/06/06 19:04

一种很常用的加快查找速度的方式,二分,解决排好序的数组中的大于x的最小(第一个数)的下标。

代码实现:

#include <iostream>#include <algorithm>#include <cstring>using namespace std;int n,x;int data[1000005];int erfen(){    int low=0,high=n-1;    int mid;    while(low<=high)    {        mid=(low+high)/2;        if(data[mid]==x)        {            //cout<<"mid= "<<mid<<endl;            return mid;        }        else if(data[mid]>x)        {            //cout<<"low= "<<low<<endl;            high=mid-1;        }        else        {            //cout<<"high= "<<high<<endl;            low=mid+1;        }    }    return high;}int main(){    while(cin>>n>>x)    {        memset(data,0,sizeof(data));        for(int i=0;i<n;i++)        {            cin>>data[i];        }        int ans=erfen();        cout<<ans+1<<endl;    }    return 0;}


原创粉丝点击