模板二分查找

Posted

tags:

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

二分查找就是指对于一个有序数列,取其中间值,与要查找的值比较,若大于,则舍弃右半部分序列,若小于则舍弃左半部分序列,其复杂度是O(logn)的。二分查找看似简单,但到处都说要想不出错很难。

inline int search(int *arr,int size,int key) { //内联查找函数,参数为序列数组,数组大小及查找的值
    int left=0,right=size; //定义整型变量left置为0,right置为size
    int mid; //定义整型变量mid
    while(left<right) { //只要left小于right,就循环
        mid=(left+right)>>1; //mid赋值为(left+right)>>1,即(left+right)/2
        if(arr[mid]<key) left=mid+1; //如果arr[mid]小于key,left赋值为mid+1
        else right=mid; //否则right赋值为mid
    }
    return left; //返回left
}
注:以上来自2017浴谷夏令营讲义

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

有序数组二分查找模板

二分——二分查找算法模板

二分查找模板和详细练习题

二分查找模板和详细练习题

模板二分查找

十分好用的二分查找模板