二分查找

Posted maoruimas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找相关的知识,希望对你有一定的参考价值。

区间[a,b],[a,c]满足条件而(c,b]不满足条件,或者,[a,c)不满足条件而[c,b]满足条件。函数bs(a,b)返回c。
特判:

  • [a,b]都不满足条件,bs(a,b)返回-1
  • [a,b]都满足条件,bs(a,b)返回b
bool ok(int m)
{
    //...
}
int bs(int l,int r)
{
    int m;
    if(ok(l)&&ok(r))return r;
    if(!ok(l)&&!ok(r))return -1;
    if(!ok(l)){r=r^l;l=r^l;r=r^l;}
    while(r-l>1||l-r>1)
    {
        m=(l+r)/2;
        if(ok(m))l=m;
        else r=m;
    }
    return l;
}

以上是关于二分查找的主要内容,如果未能解决你的问题,请参考以下文章

java 二分查找法

代码题(12)— 二分查找

二分查找代码

PHP实现二分查找算法(代码详解)

「算法笔记」一文摸秃二分查找

C语言二分查找