二分搜索與語義約定-優解實現

二分搜索優解

二分搜索(對半分)和斐波那契搜索(黃金分割)時間複雜度(1.5logn和1.4logn)差異只是較小的常數倍.
二分搜索還有可以達到O(1*logn)時間複雜度的實現.


代碼如下:


template <typename T>
size_t Bin_BetterSearch(vector<T> vec,size_t low,size_t high,T var)
{
    while(low<high){
        /* mid */
        size_t ptr = (high+low)>>1;/* ptr = (high+low)/2 */
        (var<vec[ptr])?high=ptr:low=ptr+1;
    }
    return --low;
}

二分搜索和斐波那契搜鏈接https://blog.csdn.net/qq_33904382/article/details/104222514


語義約定:
搜索方法返回不大於目標的最後一個元素的下標,沒有查找到則返回 -1

-------------------------
 |0|1|2|3|4|5|5|6|7|8|9|
-------------------------

如查找<3>則返回元素<3>的下標,查找<5>則返回第二個<5>的下標
而查找<11>則返回-1


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章