二分搜索以及查找区间的上下界

Posted sapphirebitter

tags:

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

二分查找:

int bisearch(int *a,int x,int y,int v){
    int m;
    while(x<y){
        m=x+(y-x)/2;
        if(a[m]==v) return m;
        else if(a[m]>v) y=m;
        else x=m+1;
    }
    return -1;
}

二分查找求下界:

int lower_bound(int *a,int x,int y,int v){
    int m;
    while(x<y){
        m=x+(y-x)/2;
        if(a[m]>=v) return m;
        else x=m+1;
    }
    return -1;
}

二分查找求上界:

int upper_bound(int *a,int x,int y,int v){
    int m;
    while(x<y){
        m=x+(y-x)/2;
        if(a[m]<=v) return m;
        else x=m+1;
    }
    return -1;
}

 

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

二分查找入门攻略

数值算法:无约束优化之一维搜索方法之划界法寻找极小点上下界

二分小记

二分查找(通过相对位置判断区间位置)--17--二分--LeetCode33搜索旋转排序数组

关于二分查找及其上下界问题的一些思考

二分查找笔记