二分查找
来源:互联网 发布:网件 tplink 知乎 编辑:程序博客网 时间:2024/06/17 06:49
二分查找的正确性与不变式有关,只要初始化,保持,终止这三个条件满足,算法就正确。
二分查找有很多变种,这里讨论的二分查找满足如下条件:
1、如果待查找的值在数组中并且可能不止一个,返回最小的下标。
2、如果待查找的值在数组中并且可能不止一个,返回最小的下标;
3、如果待查找的值不在数组中,返回最接近的比它大的下标。
int binarysearch(int l,int r,int k){ if (k > a[r]) return r+1; int mid; while (l < r) { mid = l + (r - l) / 2; if (a[mid] >= k) r = mid; else l = mid + 1; } return l;}
这里的l,r是闭区间。
循环不变式满足
1、a[l] <= k <= a[r],且a[l-1] < a[l],如果k在数组中
2、k < a[r],且当l!=r时有a[l]<k,如果k不在数组中
0 0
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 二分查找
- 去掉连续重复的字符
- OpenCV基础篇之绘图及RNG随机数对象
- OpenCV基础篇之像素访问
- 服务器连接字符串配置
- Insert Interval [leetcode]
- 二分查找
- 使用Pspice进行电路仿真
- OpenCV基础篇之图片叠加
- Merge Intervals [leetcode]
- 循环的角度求均值
- Spiral Matrix [leetcode]
- 花生壳如何绑定IP
- OpenCV基础篇之使用CMake管理工程
- 第一篇