判断某个数存不存在(二分)

2020-11-17  本文已影响0人  优劣在于己

个人笔记
题意:数组中找某个数,问是否存在,存在返回YES,否则返回NO
这题你可以用最简单的一遍for过,我就想做个二分搜索的笔记
思路:先排个序,然后比较中间的,目标数比它大,则在右边,反之左边

bool binary_search(int x){
    //x的存在范围是k[l],k[l+1]...k[r-1]
    int l=0,r=n;
    //直到范围为空
    while(l-r>=1){
        int m=(l+r)/2;
        if(k[m]==x)return true;
        else if(k[m]<x)l=m+1;
        else r=m;
    }
    return false;
}

但其实C++的STL中存在这个功能的函数binary_search(); 运用也很简单,头文件是<algorithm>

    if(binary_search(k,k+n,x))cout<<"YES"<<endl;
    else cout<<"NO"<<endl;

但我们要明白它的原理,不然让你面试手写原理的时候,不就懵了吗

上一篇 下一篇

猜你喜欢

热点阅读