转载至某个比较好看的博客:关于lower_bound( )和upper_bound( )的常见用法

下面的内容:

lower_bound( )和upper_bound( )都是利用二分查找的方法在一个排好序的数组中进行查找的。

在从小到大的排序数组中,

lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

在从大到小的排序数组中,重载lower_bound()和upper_bound()

lower_bound( begin,end,num,greater< type>() ):从数组的begin位置到end-1位置二分查找第一个小于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

upper_bound( begin,end,num,greater< type>() ):从数组的begin位置到end-1位置二分查找第一个小于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

#include<bits/stdc++.h>
using namespace std;
const int maxn=100000+10;
const int INF=2*int(1e9)+10;
#define LL long long
int cmd(int a,int b){return a>b;
}
int main(){int num[6]={1,2,4,7,15,34}; sort(num,num+6);                           //按从小到大排序 int pos1=lower_bound(num,num+6,7)-num;    //返回数组中第一个大于或等于被查数的值 int pos2=upper_bound(num,num+6,7)-num;    //返回数组中第一个大于被查数的值cout<<pos1<<" "<<num[pos1]<<endl;cout<<pos2<<" "<<num[pos2]<<endl;sort(num,num+6,cmd);                      //按从大到小排序int pos3=lower_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于或等于被查数的值 int pos4=upper_bound(num,num+6,7,greater<int>())-num;  //返回数组中第一个小于被查数的值 cout<<pos3<<" "<<num[pos3]<<endl;cout<<pos4<<" "<<num[pos4]<<endl;return 0;
}

lower_bound 和 upper_bound的区别相关推荐

  1. C++ lower_bound和upper_bound的区别

    lower_bound( begin,end,num):返回第一个大于等于参数num的迭代器 upper_bound( begin,end,num):返回第一个大于参数num的迭代器 >= 和& ...

  2. lower_bound和upper_bound的区别

    正序(从小到大) lower_bound()是返回第一个大于等于 i 值的元素的地址 upper_bound()是返回第一个大于 i 值的元素的地址 逆序(从大到小) lower_bound()是返回 ...

  3. lower_bound和upper_bound的实现

    binary search算法特别讲究细节,微小的改动都会带来不同的结果,这篇博客将放上lower_bound和upper_bound的实现 lower_bound的实现 说明:inputs是升序排序 ...

  4. lower_bound和upper_bound的用法

    二分查找算法可以解决最简单的二分查找问题:a数组单调递增,并且其中没有重复的数值.我们遇到的实际问题可能就没有这么简单,可能会有重复的数值.比如a数组里有3个5.这时我们查找5就有一个问题:到底返回哪 ...

  5. C++ STL: lower_bound 和 upper_bound

    接口声明 以下有两个不同的版本 lower_bound template <class ForwardIterator, class T>ForwardIterator lower_bou ...

  6. 【ACM】Uva 1152 (4 Values whose Sum is 0) 二分查找lower_bound() 和upper_bound()的使用

    [问题描述] The SUM problem can be formulated as follows: given four lists A, B, C, D of integer values, ...

  7. vector的插入、lower_bound、upper_bound、equal_range实例

    对于这几个函数的一些实例以便于理解: #include <cstdlib> #include <cstdio> #include <cstring> #includ ...

  8. lower_bound和 upper_bound 用法(STL)

    lower_bound和 upper_bound的头文件是#include<algorithm> lower_bound 返回第一个大于等于 x 的数的地址/迭代器 upper_bound ...

  9. lower_bound和upper_bound算法

    STL中的每个算法都非常精妙,接下来的几天我想集中学习一下STL中的算法. ForwardIter lower_bound(ForwardIter first, ForwardIter last,co ...

最新文章

  1. 【spring 5】AOP:spring中对于AOP的的实现
  2. 首款AI看球机器人亮相北京,已上线IOS版和安卓版
  3. java聊天室 博客_java网络聊天室
  4. angular模态框位置_宽带双波束双模态OAM反射阵天线
  5. Google Nexus5在linux下刷原生安卓 android6.0
  6. python中的运算符_Python中的运算符
  7. HLA程序:HelloWorld.hla
  8. csrf攻击ajax,如何在使用ajax post时处理CSRF攻击?
  9. GridView中添加自动编号,以及鼠标经过时行背景色变和删除时提示。
  10. 【车间调度】基于matlab遗传算法求解多目标流水车间调度问题【含Matlab源码 443期】
  11. php中dump是什么文件怎么打开,Win8/Win10 dump文件怎么打开?dump文件分析工具下载及使用教程...
  12. Hadoop学习目录导航
  13. 百度热力图颜色说明_最新黑科技!看完东莞的城市热力图,你就知道该在哪里买房了!...
  14. C++ 中调用 Jscript 的函数
  15. 利用redis生成订单号
  16. python调用外部api返回数据错误_领英网络外API调用返回“未经授权”错误
  17. 用python做一个文本翻译器,自动将中文翻译成英文,超方便的
  18. 金泰克/tigo S300 240G SM2256K H27QFG8PEM5R 完整开盘教程
  19. php notempty 标签,php – AllowEmpty vs NotEmpty
  20. [已解决]报异常java.io.InvalidClassException的解决方法|对象序列化实现Serializable会出现java.io.InvalidClassException的异常

热门文章

  1. 【yoyo】点击切换图片
  2. 遇到maven私服下载过慢或者卡死的情况
  3. w ndows无法启动wlan,解决Win7无法启动"WLAN AutoConfig"服务的问题
  4. OA系统实现(请假审批,mybatis)-2
  5. 计算机模拟实验的关系,试说明数值模拟方法的特点,它与理论研究,实验研究有什么关系...
  6. 清华大学胡事民是计算机视觉,ResNet也能用在3D模型上了,清华“计图”团队新研究已开源...
  7. Win2003集群简介
  8. Spring入门须知
  9. 以太坊钱包开发-下载、编译 go-ethereum,搭建 eth 私有链
  10. 闲鱼无货源电商课程第19期【完结】