简介

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相关推荐

  1. 给不会调用C++STL库中二分函数lower_bound,upper_bound,binary_search同学的一些话!

    lower_bound算法返回第一个大于等于给定值所在的位置.设置两个指针start和last,其中start指向数组的起始位置,last指向数组末尾位置之后的位置.当start和last指向相同位置 ...

  2. 递归来实现一个二分查找算法函数bi_search()

    题目内容: 定义一个 prime() 函数求整数 n 以内(不包括n)的所有素数(1不是素数),并返回一个按照升序排列的素数列表.使用递归来实现一个二分查找算法函数bi_search(),该函数实现检 ...

  3. 【C++ 二分函数——lower_bound upper_bound用法】

    大家好,我是Amy~ 好久不见啊(主要是我太懒了,这几天比较忙,不想更新--再加上快开学了,我的作业还没有做完QAQ)你们的暑假作业都做完了吗(哦对,大佬不用做作业QAQ) 那今天我们就接着上次的bi ...

  4. STL源码剖析 lower_bound | upper_bound | binary_search

    lower_bound 二分查找的一种版本,试图在已经排序的区间内查找元素value,如果区间内存在和value数值相等的元素,便返回一个迭代器,指向其中的第一个元素. 如果没有数值相等的元素,会返回 ...

  5. 二分查找法-函数形式

           每进行一次循环,就将所要查找的元素减少一半,在剩下的一半中循环往复,最终找到所要查找的元素. #define _CRT_SECURE_NO_WARNINGS#include<std ...

  6. C++ 二分查找函数 lower_bound upper_bound

    lower_bound (ForwardIterator first, ForwardIterator last,const T& val) (ForwardIterator first, F ...

  7. STL 二分查找 upper_bound和lower_bound用法

    STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search . 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...

  8. C++中lower_bound函数和upper_bound函数

    STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search .这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...

  9. C语言bound函数,C++中lower_bound函数和upper_bound函数

    STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search .这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...

最新文章

  1. git配置global信息
  2. 新的Teams API权限控制
  3. 使用场景_天然气重卡使用痛点及应用场景研究
  4. html 文字如何和阴影齐平,求助!Html Div齐平无效
  5. ai二维码插件_超实用的AI脚本插件合集2.0免费分享,让你的设计快人一步
  6. 关于加载表格及模态框数据回填的Bug
  7. 数据分析 | 将业务问题转换为统计问题后,我看到了数字的真相
  8. java面试题--算法集锦(建议收藏)
  9. ApplePay 支付开发
  10. mysql 易语言 邮件_易语言实现163邮箱登录获取邮件列表等操作的代码
  11. 手绘类短视频怎么制作?从剪辑到配音,后期制作也很重要
  12. 输出边长为n的正六边形(c语言)
  13. c语言1 2.5*3,若有如下变量定义并赋值:inta=1,b=2,c=3,k;float f=2.5,e;doubled=2.4,g;则下列符合C语言语法的...
  14. element-ui表格显示html格式
  15. 魔兽世界自建服务器,魔兽世界怀旧服
  16. 二维码的生成和解析原理
  17. 宝石排列 java_重新排列序列以最大化顺序差异,红宝石
  18. 百度网盘完美不限速下载,60MB/s,卢本伟修改!
  19. 如何将 APE 无损音乐转换成 FLAC音频文件
  20. c语言mac地址加冒号,如何通过在Excel中添加冒号来格式化单元格中的mac地址?

热门文章

  1. MPI编程的常用接口速查
  2. 深入理解CUDA线程层次以及关于设置线程数的思考
  3. java web 进程通信_RMI网络编程开发之一 JAVA“进程间”通信方式
  4. 【算法】一个简单的线性判别分析(LDA)原理
  5. [云炬创业基础笔记]第五章创业机会评估测试10
  6. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170322
  7. 6 种激活函数核心知识点,请务必掌握!
  8. 实现串匹配的并行算法_5-1-KMP模式匹配
  9. numpy 创建加一行_数据科学|可视化图解Python科学计算包Numpy
  10. 基于知识的推荐系统(案例学习)