1.给定区间的二分查找

Posted royzzzzz

tags:

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

template<typename T>
inline Rank Vector<T>::search(T const & e, Rank lo, Rank hi) const

    Rank mid = (hi - lo) >> 1;
    if (e < _elem[mid])
        hi = mid;
    else if (_elem[mid] < e)
        lo = mid + 1;
    else return mid;
    return -1;

1.1.优化代码(或者说增加代码可理解性)的一点

这里我们用的两个判断语句分支都用的是小于号,可以理解为,当 e < _elem[mid] , 关键码在序列的左边,反之,在右边。

1.2.复杂度

最差的情况为n/2不断的递减,也可以理解为log n 不断的减少一层找到最后的关键码(类似于树的深度)。

复杂度是  O(log n )

以上是关于1.给定区间的二分查找的主要内容,如果未能解决你的问题,请参考以下文章

二分查找(通过相对位置判断区间位置)--17--二分--LeetCode33搜索旋转排序数组

Task 04:数组二分查找

二分查找

二分查找典型例题分析

[计算机数值分析]二分查找求根法

[计算机数值分析]二分查找求根法