C++中lower_bound函数和upper_bound函数
STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数。
ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于等于值val的位置。
ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)算法返回一个非递减序列[first, last)中的第一个大于值val的位置。
lower_bound和upper_bound如下图所示:
1.lower_bound函数源代码:
01.
//这个算法中,first是最终要返回的位置
02.
int
lower_bound(
int
*array,
int
size,
int
key)
03.
{
04.
int
first =
0
, middle;
05.
int
half, len;
06.
len = size;
07.
08.
while
(len >
0
) {
09.
half = len >>
1
;
10.
middle = first + half;
11.
if
(array[middle] < key) {
12.
first = middle +
1
;
13.
len = len-half-
1
;
//在右边子序列中查找
14.
}
15.
else
16.
len = half;
//在左边子序列(包含middle)中查找
17.
}
18.
return
first;
19.
}
2.upper_bound函数源代码:
01.
int
upper_bound(
int
*array,
int
size,
int
key)
02.
{
03.
int
len = size-
1
;
04.
int
half, middle;
05.
06.
while
(len >
0
){
07.
half = len >>
1
;
08.
middle = first + half;
09.
if
(array[middle] > key)
//中位数大于key,在包含last的左半边序列中查找。
10.
len = half;
11.
else
{
12.
first = middle +
1
;
//中位数小于等于key,在右半边序列中查找。
13.
len = len - half -
1
;
14.
}
15.
}
16.
return
first;
17.
}
转载于:https://www.cnblogs.com/liudehao/p/4133921.html
C++中lower_bound函数和upper_bound函数相关推荐
- C语言bound函数,C++中lower_bound函数和upper_bound函数
STL中关于二分查找的函数有三个lower_bound .upper_bound .binary_search .这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数. ...
- lower_bound()函数和upper_bound函数
头文件:algorithm int pos1=lower_bounda,a+n,k)-a;返回数组中第一个大于或等于k的值的下标 int pos2=upper_bound(a,a+n,k)-a;返回数 ...
- upperbound找不到_lower_bound()函数和upper_bound()函数,以及二分查找
lower_bound(): 默认版本 template ForwardIterator lower_bound (ForwardIterator first, ForwardIterator las ...
- C++ lower_bound 与 upper_bound 函数
头文件: #include <algorithm> 二分查找的函数有 3 个: 参考:C++ lower_bound 和upper_bound lower_bound(起始地址,结束地址 ...
- lower_bound()/upper_bound()函数(C++)
文章目录 1.lower_bound()/upper_bound()函数简单介绍 2.lower_bound()/upper_bound()函数分析 3.lower_bound()/upper_bou ...
- 二分查找、求上界和下界(包括内置函数lower_bound、和upper_bound的使用)
二分查找: //二分查找(迭代实现) int bsearch(int* array, int low, int high, int index) {int mid;while (low < hi ...
- C++ lower_bound() upper_bound() 函数用法详解(深入了解,一文学会)
find().find_if().search() 等.值得一提的是,这些函数的底层实现都采用的是顺序查找(逐个遍历)的方式,在某些场景中的执行效率并不高.例如,当指定区域内的数据处于有序状态时,如果 ...
- lower_bound()和upper_bound( )函数详解
lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的.两个函数的用法类似,在一个左闭右开的有序区间里进行二分查找,需要查找的值由第三个参数给出 ...
- oracle中的循环函数,Oracle日期函数和循环总结
一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...
最新文章
- python矩阵运算库效率_python - 布尔矩阵运算的最快方法_performance_酷徒编程知识库...
- 使用json-lib实现json to javabean
- MySQL自动化平台那些事-分秒必争
- python爬虫---从零开始(一)初识爬虫
- php facade模,PHP 设计模式之外观模式 Facade
- wxWidgets:C++ 异常
- python中怎么比较两个列表的大小_在Python中比较两个大小不同的列表
- DBUtils事务处理
- 13.4 MySQL用户管理;13.5 常用sql语句;13.6 MySQL数据库备份恢复
- SAP HANA Express 版本的注册和安装
- python读写文件实例_python读写文件的简单示例
- 架构设计器_大厂案例:马蜂窝大交通业务监控报警系统架构设计与实现
- php5.5升级到php5.6,从php5.5.9升级到php5.6之后,相当于php5enmod?
- 实现多国语言的几个小知识
- axure html尺寸,Axure 原型 | 教你使用自适应视图构建界面
- linux查看挂载内存卡,Ubuntu Linux 挂载移动硬盘、U盘、SD卡(对于新手)
- 软考初级程序员怎么备战好一点,有什么好的复习方法推荐吗?
- 前额单通道脑电睡眠分期算法设计
- 公路养护工证含金量高吗?在哪报考?
- 单循环赛制php,年度总决赛个人PK循环赛赛制解读