基本的二分查找
来源:互联网 发布:常见毒药 知乎 编辑:程序博客网 时间:2024/05/17 22:18
二分查找有两个库函数
lower_bound和upper_bound
int a[10] = {0,1,2,2,4,4,4,4,5,6}; int k = (int)(lower_bound(a+1,a+1+9,4) - (a+1)); //返回的是第一次出现4的前一个位置结果是3 int f = (int)(upper_bound(a+1,a+1+9,4) - (a+1)); //返回的是最后一次出现4的位置。
这里我是用从1开始的,从0开始可以类比。
这里我们也可以自己实现二分查找,如下
#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;int main(void){ int a[10] = {0,1,2,2,4,4,4,4,5,6}; int l = 1,r = 9; int find = 4; while(r - l > 1){ int mid = (l+r)/2; if(a[mid] >= find)//这里是更新r,然后不断缩短右区间 r = mid; else l = mid; } printf("%d\n",r); //这里是返回这个数的最后一个位置7,如果这个序列没有这个数,得到的是刚好比这个数大的第一个位置。 l = 1,r = 9; while(r - l > 1){ int mid = (l+r)/2; if(a[mid] <= find)//不断缩减左区间 l = mid; else r = mid; } //这里得到的是这个数第一次出现的位置4,如果这个序列没有这个数,得到的是刚好比这个数小的最后一个位置。 printf("%d\n",l); return 0;}
阅读全文
0 0
- 基本的二分查找
- 基本的二分查找算法
- canyon?最基本的二分查找
- 二分查找的两种基本方式
- 基本算法-二分查找
- 算法学习---基本数据类型的数组二分查找实现
- 二分查找法的基本思想与实现代码
- js基本语法--查找(二分查找)
- 二分查找和递归的二分查找
- 二分查找,二叉查找树(二叉排序树)的基本思想以及算法实现
- 二分查找的思考
- 二分查找的总结
- vector的二分查找
- 二分查找的应用
- 二分查找的扩展
- 无处不在的二分查找
- 改进的二分查找
- 简单的二分查找
- 查找的计算题
- Android 增量更新技术实现
- Java:身份证号的校验与生成
- C++知识总结(12)
- Ubuntu 16.04安装Eclipse并创建桌面快捷方式
- 基本的二分查找
- Mycat之——按日期(天)分片
- 从策划到运营,做一款地方棋牌要解决哪些问题
- C++知识总结(13)
- 7. Reverse Integer
- 《笨办法学python》加分习题5——我的答案
- 大型网站技术架构
- qml在stackView的情况下处理Android back键(返回键)全局双击back键退出程序
- DNS高速缓存以及DDNS动态域名服务的配置