码迷,mamicode.com
首页 > 其他好文 > 详细

【模板】二分查找

时间:2017-07-31 16:27:03      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:模板   二分查找   while   line   lin   参数   log   inline   循环   

二分查找就是指对于一个有序数列,取其中间值,与要查找的值比较,若大于,则舍弃右半部分序列,若小于则舍弃左半部分序列,其复杂度是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浴谷夏令营讲义

【模板】二分查找

标签:模板   二分查找   while   line   lin   参数   log   inline   循环   

原文地址:http://www.cnblogs.com/Mr94Kevin/p/7263708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!