c++ 二分查找的函数 lower_bound upper_bound binary_search
简介
C++ STL 中二分查找函数主要有这三种:
lower_bound()
upper_bound()
binary_search()
这三个函数都运用于有序区间。
用法
1. lower_bound(a+1,a+1+n,x)-a
返回一个非递减序列 [1,n][1, n] 中的第一个大于等于值 xx 的位置 (int)(int)。
程序相当于:
int lower_bound()
{int l=1,r=n;while(l<r){int mid=(l+r)/2;if(a[mid]>=x) r=mid; else l=mid+1;}return l;
}
2. upper_bound(a+1,a+1+n,x)-a
返回一个非递减序列 [1,n][1, n] 中的第一个大于值 xx 的位置 (int)(int)。
程序相当于:
int upper_bound()
{int l=1,r=n;while(l<r){int mid=(l+r)/2;if(a[mid]>x) r=mid; else l=mid+1;}return l;
}
3. binary_search(a+1,a+1+n,x)
返回一个非递减序列 [1,n][1, n] 中是否存在值 xx。(bool)(bool)。
程序相当于:
bool upper_bound()
{int l=1,r=n;while(l<r){int mid=(l+r)/2;if(a[mid]>=x) r=mid; else l=mid+1;}if(a[l]==x) return true; else return false;
}
总结
这些二分查找函数时间复杂度都是 O(logn)O(log n),十分简便,缩短了代码,节约了时间,可以多多使用!!
c++ 二分查找的函数 lower_bound upper_bound binary_search相关推荐
- 给不会调用C++STL库中二分函数lower_bound,upper_bound,binary_search同学的一些话!
lower_bound算法返回第一个大于等于给定值所在的位置.设置两个指针start和last,其中start指向数组的起始位置,last指向数组末尾位置之后的位置.当start和last指向相同位置 ...
- 递归来实现一个二分查找算法函数bi_search()
题目内容: 定义一个 prime() 函数求整数 n 以内(不包括n)的所有素数(1不是素数),并返回一个按照升序排列的素数列表.使用递归来实现一个二分查找算法函数bi_search(),该函数实现检 ...
- 【C++ 二分函数——lower_bound upper_bound用法】
大家好,我是Amy~ 好久不见啊(主要是我太懒了,这几天比较忙,不想更新--再加上快开学了,我的作业还没有做完QAQ)你们的暑假作业都做完了吗(哦对,大佬不用做作业QAQ) 那今天我们就接着上次的bi ...
- STL源码剖析 lower_bound | upper_bound | binary_search
lower_bound 二分查找的一种版本,试图在已经排序的区间内查找元素value,如果区间内存在和value数值相等的元素,便返回一个迭代器,指向其中的第一个元素. 如果没有数值相等的元素,会返回 ...
- 二分查找法-函数形式
每进行一次循环,就将所要查找的元素减少一半,在剩下的一半中循环往复,最终找到所要查找的元素. #define _CRT_SECURE_NO_WARNINGS#include<std ...
- C++ 二分查找函数 lower_bound upper_bound
lower_bound (ForwardIterator first, ForwardIterator last,const T& val) (ForwardIterator first, F ...
- STL 二分查找 upper_bound和lower_bound用法
STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search . 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...
- C++中lower_bound函数和upper_bound函数
STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search .这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...
- C语言bound函数,C++中lower_bound函数和upper_bound函数
STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search .这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...
最新文章
- git配置global信息
- 新的Teams API权限控制
- 使用场景_天然气重卡使用痛点及应用场景研究
- html 文字如何和阴影齐平,求助!Html Div齐平无效
- ai二维码插件_超实用的AI脚本插件合集2.0免费分享,让你的设计快人一步
- 关于加载表格及模态框数据回填的Bug
- 数据分析 | 将业务问题转换为统计问题后,我看到了数字的真相
- java面试题--算法集锦(建议收藏)
- ApplePay 支付开发
- mysql 易语言 邮件_易语言实现163邮箱登录获取邮件列表等操作的代码
- 手绘类短视频怎么制作?从剪辑到配音,后期制作也很重要
- 输出边长为n的正六边形(c语言)
- c语言1 2.5*3,若有如下变量定义并赋值:inta=1,b=2,c=3,k;float f=2.5,e;doubled=2.4,g;则下列符合C语言语法的...
- element-ui表格显示html格式
- 魔兽世界自建服务器,魔兽世界怀旧服
- 二维码的生成和解析原理
- 宝石排列 java_重新排列序列以最大化顺序差异,红宝石
- 百度网盘完美不限速下载,60MB/s,卢本伟修改!
- 如何将 APE 无损音乐转换成 FLAC音频文件
- c语言mac地址加冒号,如何通过在Excel中添加冒号来格式化单元格中的mac地址?
热门文章
- MPI编程的常用接口速查
- 深入理解CUDA线程层次以及关于设置线程数的思考
- java web 进程通信_RMI网络编程开发之一 JAVA“进程间”通信方式
- 【算法】一个简单的线性判别分析(LDA)原理
- [云炬创业基础笔记]第五章创业机会评估测试10
- 学长毕业日记 :本科毕业论文写成博士论文的神操作20170322
- 6 种激活函数核心知识点,请务必掌握!
- 实现串匹配的并行算法_5-1-KMP模式匹配
- numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy
- 基于知识的推荐系统(案例学习)