二分查找-1
思路 1:在循环体中查找元素
代码模板
1 | int bs(vector<T> &vec,T target){ |
复杂度分析:
- 时间复杂度 二分查找的时间复杂度是 O(logN) 这里N是输入数组的长度
- 空间复杂度 由于二分查找算法在执行的过程中只使用到常数个临时变量 因此空间复杂度是 O(1)
细节
- 循环可以继续的条件
left<=right表明区间仅剩一个元素时仍需继续查找 - 取中间值
(l+r)/2可能导致l+r发生溢出 所以使用l+(r-l)/2来防止溢出 - 取中间值也可以向上取整