二分搜索与语义约定-优解实现

二分搜索优解

二分搜索(对半分)和斐波那契搜索(黄金分割)时间复杂度(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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值