STL 中,在 <algorithm> 头文件里提供了两个利用二分查找的方法在一个排好序的数组中进行查找。

在一个从小到大的排好序的数组中:

  • lower_bound(begin,end,num):从数组的 begin 位置到 end-1 位置二分查找第一个大于等于 num 的数字,找到返回该数字的地址,不存在则返回 end
  • upper_bound( begin,end,num):从数组的 begin 位置到 end-1 位置二分查找第一个大于 num 的数字,找到返回该数字的地址,不存在则返回 end

而在一个从大到小的排好序的数组中:

  • lower_bound( begin,end,num,greater<type>() ):从数组的 begin 位置到 end-1 位置二分查找第一个小于等于 num 的数字,找到返回该数字的地址,不存在则返回 end
  • upper_bound( begin,end,num,greater<type>() ):从数组的 begin 位置到 end-1 位置二分查找第一个小于 num 的数字,找到返回该数字的地址,不存在则返回 end。

可以通过这两个方法返回的地址减去起始地址 begin,即可得到数字在数组中的下标。

int cmp(int a,int b){return a>b;
}
int num[5]={1,4,6,9,8};
int pos;sort(num,num+5);//按从小到大
pos=lower_bound(num,num+5,7)-num;//返回数组中第一个大于或等于7的值
pos=upper_bound(num,num+5,7)-num;//返回数组中第一个大于7的值sort(num,num+6,cmp);//按从大到小
pos=lower_bound(num,num+5,7,greater<int>())-num;//返回数组中第一个小于或等于7的值
pos=upper_bound(num,num+5,7,greater<int>())-num;//返回数组中第一个小于7的值

C++ 语言基础 —— STL —— 算法 —— 二分查找算法相关推荐

  1. python基础一 day17 二分查找算法

    # 什么叫算法 # 计算的方法 : 人脑复杂 计算机简单 # 99 * 13 = 1287 = 13*100 - 13 # 查找 : 找数据 # 排序 : # 最短路径 # 我们学习的算法 都是过去时 ...

  2. [算法]二分查找算法

    [思想] 二分搜索主要解决的问题是确定排序后的数组x[0,n-1]中是否包含目标元素target. 二分搜索通过持续跟踪数组中包含元素target的范围(如果target存在数组中的话)来解决问题. ...

  3. 【007】 二分查找算法(Binary Search)

    文章目录 1. 二分查找算法 2. 算法思想 3. 代码实现 4. 示例代码 5. 算法最好/最坏情况 1. 二分查找算法 二分查找算法也称为"折半查找",它是一种高效的查找技术, ...

  4. C语言二分查找算法[基础算法]

    该算法一般适用于查找数组元素 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少; 其缺点是要求待查表为有序表,且插入删除困难. 适用于不经常变动而查找频繁的有序列表. ...

  5. C++语言基础 —— STL —— 算法

    [概述] STL 是指 C++ 标准模板库,是 C++ 语言标准中的重要组成部分,其以模板类和模版函数的形式提供了各种数据结构与算法的精巧实现,如果能充分使用 STL,可以在代码空间.执行时间.编码效 ...

  6. 二分查找算法c语言伪代码,算法-二分搜索算法

    算法:二分搜索算法(折半查找算法) 时间复杂度: 二分搜索算法概述 二分搜索算法伪代码 二分搜索算法实现 二分搜索算法概述 二分搜索算法,也称折半查找算法,即在一个有序数组中查找某一个特定元素.整个搜 ...

  7. leetcode中关于使用二分查找算法思想deal的题型

    学习了二分查找的算法思想之后,再leetcode上写了一道常见的简单面试题,现在用博客记录一下我学习刷题的笔记! leetcode 题号69:Sqrt(x)(经典的面试题) 给你一个非负整数 x ,计 ...

  8. 二分查找算法(折半查找算法)

    二分查找算法(折半查找算法) 二分查找又称折半查找.二分搜索.折半搜索等,是在分治算法基础上设计出来的查找算法,对应的时间复杂度为O(logn). 二分查找算法仅适用于有序序列,它只能用在升序序列或者 ...

  9. 二分查找算法的一点改进

    在计算机科学中,二分查找,是一种在有序数组中查找某一特定元素的搜索算法.这种搜索算法每一次比较都使搜索范围减半.第一篇二分查找的论文发表于1946年,然而第一个没有bug的二分查找算法却是在1962年 ...

最新文章

  1. Java高级架构之FastDFS分布式文件集群
  2. 阿里云混合云Apsara Stack 2.0发布,加速政企数智创新
  3. Mac下安装多版本python
  4. ora-01034 / ORA-27101 错误.
  5. http 请求 与其同步与异步请求的通透讲解
  6. HDU 6750 Function(莫比乌斯反演)(2020百度之星初赛1)
  7. Angular_PWA使用+Demo
  8. android studio生成签名导打包的方法
  9. ExtJs与jQuery的比较
  10. rostcm6情感分析案例分析_情感分析师在线指导情感挽回
  11. 考试系统微信小程序的设计与实现
  12. 写在微信小程序一周年
  13. 计算机在日常办公众的应用论文,计算机及应用基础专业论文.docx
  14. 创建本地的https证书
  15. 检测分割算法改进(篇一) YoloX和Yolov3-v5之FCOUS模块、CSP模块、SPP模块
  16. React控制台警告Warning: ReactDOM.render is no longer supported in React 18. Use createRoot instead. Until
  17. 战地1如何修改服务器,战地1修改服务器地址
  18. java毕业设计飞机航班信息查询系统源码+系统+数据库+lw文档+调试运行
  19. 高德地图 ——获取定位信息
  20. 新年礼物盒打开css3动画js特效代码

热门文章

  1. LoadRunner常用函数(转)
  2. 用户画像有什么用?怎样用?6个场景案例给你讲明白
  3. TED演讲:数据科学家最重要的技能是什么
  4. MySQL 中删除的数据都去哪儿了?
  5. 用了这么多年的 Java 泛型,你对它到底有多了解?
  6. 求老板放过!我Java8还没用呢,Java14又来了...
  7. Vue 高效清空表单,一键清空表单
  8. 专题开发十二:JEECG微云快速开发平台-基础用户权限
  9. 专刊文章 - Web UI框架引领J2EE新开发模式(代码生成器+手工merge半智能开发)
  10. 解决ubuntu下pdf中文不显示或乱码问题