【模板】二分查找


二分查找就是指對於一個有序數列,取其中間值,與要查找的值比較,若大於,則舍棄右半部分序列,若小於則舍棄左半部分序列,其復雜度是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浴谷夏令營講義


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



二分查找 模板 模板--二分查找 二分查找模板 二分查找模板 二分查找模板 二分查找【模板】 二分查找模板 二分查找(模板) 二分查找(模板) 二分查找模板
 
粤ICP备14056181号  © 2014-2020 ITdaan.com