STL中的二分查找--lower_bound/upper_bound/binary_search

C++ STL中的Binary search(二分查找) 一线互联网Android面试题含详解(初级到高级专题)这些题目是今年群友去腾讯、百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。并且大多数都整理了答案,熟悉这些知识点会大大增加通过前两轮技术面试的几率如果设置门槛,很多开发者朋友会因此错过这套高级架构资料,错过提升成为架构师的可能。这就失去了我们的初衷;让更多人都能通过高效高质量的学习,提升自己的技术和格局,升职加薪。最后送给大家一句话,望共勉,永远不要放弃自己的梦想和追求; 阅读详情

转载于该大佬的博客:https://blog.youkuaiyun.com/u012878643/article/details/46723609

 

 

前言: STL中关于二分查找的函数主要有三个,分别是lower_bound/upper_bound/
binary_search。这三个函数都运用于有序区间,当然这也是二分查找思想运用的前提,下面逐一对这三个函数进行剖析。

在深入剖析之前,首先给出各函数的原型声明,由于这三个函数都包含在算法库中,因此首先应该包含头文件,如下所示:

#include <algorithm>
using namespace std;

lower_bound算法返回一个非递减序列[first, last)中的第一个大于等于val的位置。
upper_bound算法返回一个非递减序列[first, last)中的第一个大于val的位置。

ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)
ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)
ForwardIterator lower_bound (ForwardIterator first, ForwardIterator last,
                             const T& val, Compare comp);
ForwardIterator upper_bound (ForwardIterator first, ForwardIterator last,
                             const T& val, Compare comp);

在没有给出三个函数源码之前,我们首先给出基本的二分查找的代码,作为后续介绍的基础:

template<class ElementType>
int BinarySearch(ElementType *pData,int First,int Last,ElementType Key)
{
    while (First<=Last)      //最后一次循环是通过First=Last来定位Key的
    {
        Middle=(First+Last)/2;
        if (pData[Middle]==Key)
            return Middle;
        if (pData[Middle]>Key)
            Last=Middle-1;//在左子区间找key
        else
            First=Middle+1;//在右子区间找key
    }
    return -1;//没有找到
}

对于递增序列中有重复数字出现的情况,用改进的二分查找可以返回第一次出现的位置或者最后一次出现的位置,如下所示:

template<class ElementType>
int BinarySearch_First(ElementType *pData,int First,int Last,ElementType Key)
{
    int iPos=-1;
    while (First<=Last)      //最后一次循环是通过First=Last来定位Key的
    {
        int Middle=(First+Last)/2;
        if (pData[Middle]==Key)
        {
            iPos=Middle;
            Last=Middle-1;//不要停,向左继续进行二分查找
            //      First=Middle+1;//如果要找到最后一次出现的位置
        }
        else if(pData[Middle]>Key)
            Last=Middle-1;
        else
            First=Middle+1;
    }
    return iPos;
}

对二分查找算法进一步改进可以处理查找不成功的情况。假设要求在查找不成功的情况下输出一个最接近key的区间,使得key属于此区间。试想,如果查找不成功,则最后停下来的元素的左边或者右边一定是最接近key的元素。代码如下:

template<class ElementType>
int *BinarySearch_Secnd(ElementType *pData,int First,int Last,ElementType Key)
{
    int iPos=-1;
    while (First<=Last)      //最后一次循环是通过First=Last来定位Key的
    {
        int Middle=(First+Last)/2;
        if (pData[Middle]==Key)
        {
            iPos=Middle;
            break;
        }

        if(pData[Middle]>Key)
            Last=Middle-1;
        else
            First=Middle+1;
    }

    //以下代码处理查找不成功的情况,可以根据题意修改代码,如返回区间或者返回最接近的那个
    int *pArray=new int[2];
    if (iPos!=-1) //查找成功
    {
        pArray[0]=iPos;
        pArray[1]=iPos;
    }
    else //查找不成功
    {
        if (pData[iPos]>Key)
        {
            pArray[0]=iPos-1;//下界,注意下界可能小于0
            pArray[1]=iPos;//上界
        }
        else
        {
            pArray[0]=iPos;//下界
            pArray[1]=iPos+1;//上界,注意上界可能大于原来的Last位置
        }
    }

    return pArray;
}

1.lower_bound函数

以下代码非STL源码,但完全体现出了STL中lower_bound函数的思想:

int lower_bound(int *array, int size, int key)
{
    int first = 0, middle;
    int half, len;
    len = size;

    while(len > 0) {
        half = len >> 1;
        middle = first + half;//中位元素
        if(array[middle] < key) {     
            first = middle + 1;//因为要查找大于等于key的第一个元素,所以加1    
            len = len-half-1;       //在右边子序列中查找
        }
        else
            len = half;            //在左边子序列(包含middle)中查找
    }
    return first;
}

2.upper_bound函数

int upper_bound(int *array, int size, int key)
{
    int first = 0, len = size-1;
    int half, middle;

    while(len > 0){
        half = len >> 1;
        middle = first + half;
        if(array[middle] > key) //中位数大于key,在包含last的左半边序列中查找。
            len = half;
        else{
            first = middle + 1;    //中位数小于等于key,在右半边序列中查找。
            len = len - half - 1;
        }
    }
    return first;
}

如果是使用了comp仿函数版本,则将以上代码中if判断语句改成comp函数调用即可;因为原始的序列是有序的,且满足comp(_left,_right)。实际上,upper_bound函数查找到的是第一个不满足comp(_left,key)的元素。下面给出STL中函数的源码:

template <class ForwardIterator, class T>  
inline ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last,  
                                   const T& value) {  
                                       return __lower_bound(first, last, value, distance_type(first),  
                                           iterator_category(first));  
}

函数通过调用__lower_bound实现,分两个版本,第一种是调用默认less仿函数的,第二种是指定comp函数的,如下所示:

template <class ForwardIterator, class T, class Distance>  
ForwardIterator __lower_bound(ForwardIterator first, ForwardIterator last,  
                              const T& value, Distance*,  
                              forward_iterator_tag) {  
                                  Distance len = 0;  
                                  distance(first, last, len);   // 求取整个范围的长度,ForwardIterator没有-n操作  
                                  Distance half;  
                                  ForwardIterator middle;  

                                  while (len > 0) 
                                  {                        
                                      half = len >> 1; // 除以2,注意这种移位写法,不需编译器进行优化  
                                      middle = first;  // 这两行令middle 指向中间位置  
                                      advance(middle, half); //ForwardIterator没有+n的操作  
                                      if (*middle < value) // 如果中间位置的元素值 < key的值,在后半区间  
                                      { 
                                          first = middle; // 这两行令 first 指向 middle 的下一位置  
                                          ++first;  
                                          len = len - half - 1; // 修正 len,回头测试循环条件  
                                      }  
                                      else  // 注意如果是相等的话,那么执行的是else语句,在前半部分找                          
                                          len = half; // 修正 len,回头测试循环条件  
                                  }  
                                  return first;  
}  

下面是带comp函数的版本:

template <class ForwardIterator, class T, class Compare, class Distance>  
ForwardIterator __lower_bound(ForwardIterator first, ForwardIterator last,  
                              const T& value, Compare comp, Distance*,  
                              forward_iterator_tag) {  
                                  Distance len = 0;  
                                  distance(first, last, len);  
                                  Distance half;  
                                  ForwardIterator middle;  

                                  while (len > 0) 
                                  {  
                                      half = len >> 1;  
                                      middle = first;  
                                      advance(middle, half);  //middle=middle+half;
                                      if (comp(*middle, value)) //此处采用comp函数进行比较
                                      {  
                                          first = middle;  //若比较结果为TRUE,则在右半子区间进行比较
                                          ++first;  
                                          len = len - half - 1;  
                                      }  
                                      else  
                                          len = half;  //若比较结果为false,则在左半子区间进行比较
                                  }  
                                  return first;  
} 

upper_bound函数两个版本的源码如下所示:

template <class ForwardIterator, class T, class Compare>  
inline ForwardIterator upper_bound(ForwardIterator first, ForwardIterator last,  
                                   const T& value, Compare comp) {  
                                       return __upper_bound(first, last, value, comp, distance_type(first),  
                                           iterator_category(first));  
}   

upper_bound函数通过调用__upper_bound函数实现,两个版本的函数如下:

template <class ForwardIterator, class T, class Distance>  
ForwardIterator __upper_bound(ForwardIterator first, ForwardIterator last,  
                              const T& value, Distance*,  
                              forward_iterator_tag) {  
                                  Distance len = 0;  
                                  distance(first, last, len);     
                                  Distance half;  
                                  ForwardIterator middle;  

                                  while (len > 0) {  
                                      half = len >> 1;            
                                      middle = first;               
                                      advance(middle, half);  
                                      if (value < *middle)     // 如果中间位置的元素值大于标的值,证明在前半部分  
                                          len = half; // 修正len  
                                      else {                      // 注意如果元素值相等的话,那么是在后半部分找                           
                                          first = middle; // 在后半部分,令first指向middle的下一个位置  
                                          ++first;  
                                          len = len - half - 1; 
                                      }  
                                  }  
                                  return first;  
}  

第二个是带comp仿函数的版本:

template <class ForwardIterator, class T, class Compare, class Distance>  
ForwardIterator __upper_bound(ForwardIterator first, ForwardIterator last,  
                              const T& value, Compare comp, Distance*,  
                              forward_iterator_tag) {  
                                  Distance len = 0;  
                                  distance(first, last, len);  
                                  Distance half;  
                                  ForwardIterator middle;  

                                  while (len > 0) {  
                                      half = len >> 1;  
                                      middle = first;  
                                      advance(middle, half);  
                                      if (comp(value, *middle))  
                                          len = half;  
                                      else {  
                                          first = middle;  
                                          ++first;  
                                          len = len - half - 1;  
                                      }  
                                  }  
                                  return first;  
}  

由以上可以看出,lower_bound和upper_bound函数不同点在于如果comp(value,*middle)为TRUE,说明value在*middle的左边,则lower_bound函数在前半子区间进行查找,而upper_bound函数在右半子区间进行查找;

3.binary_search函数

默认less函数的版本:

template <class ForwardIterator, class T>  
bool binary_search(ForwardIterator first, ForwardIterator last,  
                   const T& value) {  
                       ForwardIterator i = lower_bound(first, last, value);    
                       //这里的实现就是调用的lower_bound ,并且如果元素不存在那么lower_bound指向的元素一定是  
                       //operator < 为ture的地方。  
                       return i != last && !(value < *i);  
}  

带comp函数的版本:

template <class ForwardIterator, class T, class Compare>  
bool binary_search(ForwardIterator first, ForwardIterator last, const T& value,  
                   Compare comp) {  
                       ForwardIterator i = lower_bound(first, last, value, comp);  
                       return i != last && !comp(value, *i);  
}  

核心思想是Divide and conqure!将原来的数组不断地分成两个子数组,取其一进行解决。

C++中的二分函数——binary_search、lower_bound、upper_bound C++STL中关于二分的函数有三个lower_bound 、upper_bound 、binary_search 。 正确的使用这三个函数既能够使我们的代码看起来更加整洁,又能够避免我们在用到二分算法时手打代码犯一些低级的错误。 C++STL中这三个函数的头文件均为< algorithm >,调用这三个函数也有一个大前提,当然也是二分查找的前提,那就是你要查找的序列a必须是一个有序序列... 阅读详情

相关推荐

MDK开发篇:基于立创逻辑派FPGA-G1与Cortex-M1软核的按键控制LED实战

本文详细介绍了基于立创逻辑派FPGA-G1开发板与高云Cortex-M1软核的完整开发流程。通过Gowin云源软件配置软核系统与GPIO外设,并在Keil MDK环境中编写按键控制LED的C程序,最终实现程序固化与上电自启动。教程涵盖硬件配置、软件开发、在线调试与固化部署全步骤,帮助STM32开发者快速上手FPGA软核开发。

weixin_42103128的博客 148

用stl函数来实现二分查找

算法日记(一)_m0_61723200的博客-优快云博客 之前在这篇文章用的是自定义函数的方法进行二分查找的,今天我会用stl函数进行二分查找. binary_search:查找某个元素是否出现,返回bool型。 lower_bound:查找第一个大于或等于某个元素的位置。 upper_bound:查找第一个大于某个元素的位置。 先看道二分查找的题 二分搜索基础版 Description 给你一个长度为n的排列有序从小到大递增的数组, 还有q次查询, 询问一个数字在这个数组中出.

m0_61723200的博客 1704

SVPWM原理与MCU/FPGA实现:从数学推导到工程实战

空间矢量调制(SVPWM)是实现高性能电机驱动控制的核心算法之一,其通过六个基本电压矢量与零矢量的伏秒平衡,在一个PWM周期内合成任意方向的旋转电压圆,相比传统SPWM可提升约15%的直流电压利用率。该技术不仅涉及扇区判断、作用时间计算、过调制限幅等数学原理,还在MCU与FPGA两种硬件平台上有不同的工程实现路径,包括中心对齐PWM配置、死区插入、定点数流水线设计等。在电动工具、无人机、机器人及车载执行器等电池供电场景中,SVPWM直接决定续航与扭矩表现。本文从数学原理出发,详细拆解MCU和FPGA实现细节

weixin_34265814的博客 301

STL 二分查找

Binary_search

qq_51668179的博客 814

Verilog数字钟

使用Verilog语言进行的数字钟的编写,FPGA开发板亲测正常 大学生一个,第一次自己做的东西,写出来分享在这里插入代码片一下,有不对的地方请大家批评指正。 这次的做的题是:设计一个数字钟,该数字钟能进行正常的时,分计时功能,且能对数字钟的时间进行调整。 该数字钟有3个按键,按键1为功能键,用于数字钟在“正常计时”,“时调整”,“分调整”这三个功能之间切换;按键2,3用于调整时间,仅当数字钟处于...

bin_bin_bun的博客 6149

Glue)《Multi-omics single-cell data integration and regulatory inference with graph-linked embedding》

论文引入GLUE框架,通过知识引导图(guidance graph)显式建模跨层调控交互,桥接特征空间,实现准确、鲁棒、可扩展的整合。近年来,单细胞测序技术(如scATAC-seq用于染色质可及性、snmC-seq用于DNA甲基化、scRNA-seq用于转录组)允许同时探测多个组学层,揭示细胞异质性和调控机制。GLUE优于现有方法:桥接特征空间,避免信息丢失,支持多组学和调控推断。用于整合未配对的单细胞多组学数据(如scRNA-seq、scATAC-seq和snmC-seq),并同时进行调控交互推断。

m0_58293236的博客 1152

【C++】C++11 STL算法(四):二分查找法(Binary search operations)、合并操作

头文件:#include <algorithm> 一、lower_bound 1、原型: template< class ForwardIt, class T > ForwardIt lower_bound( ForwardIt first, ForwardIt last, const T& value ); template< class ForwardI...

郭老二 1812

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 3408

STL二分查找

本课主要介绍容器部分里面的二分查找函数。涉及的函数有 3 个,这 3 个函数的强两个输入参数都和迭代器有关,或者说参数是可以迭代的,而第三个参数则是你要查找的值。

dazys的博客 860

Qt垂直滚动条QVerticalScrollBar详解:从基础到实战的控件开发指南

本文系统解析Qt中QVerticalScrollBar的用法,从基础概念到进阶技巧。主要内容包括:1)基础认知:介绍其继承关系、作用及典型应用场景;2)核心用法:创建方法、关键属性配置和信号槽连接;3)进阶技巧:自定义样式表美化外观,以及与自定义内容区域的联动实现;4)实战注意事项,如避免循环触发和高DPI适配等。文章强调掌握QVerticalScrollBar对提升Qt滚动类功能开发效率的重要性,并建议通过自定义文本编辑器实践巩固知识点。

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 759

Claude Code 100个真实案例 - 用AI设计Arduino PCB电路板(硬件小白也能画板)

本案例展示如何使用 Claude Code 配合 KiCad 的 Python 脚本接口,从零设计一块 Arduino 传感器扩展板 PCB。从原理图符号创建、网表生成到 PCB 布局布线,全程自动化完成,最终输出可直接发给工厂打样的 Gerber 文件。

yueyeguzhuo的专栏 439

STL中二分查找函数

这个函数同样可以用来获取元素的位置(通过减去范围的起始迭代器),但它是查找大于给定值的第一个元素。这些STL函数大大简化了二分查找的实现,并且由于它们是库函数,通常经过了优化,因此在性能上也是很好的。这个函数返回的迭代器可以用来获取元素的位置(通过减去范围的起始迭代器)。函数用于判断一个元素是否存在于已排序的范围内。这个函数只告诉你元素是否存在,但不返回元素的位置。函数用于查找第一个不小于给定值的元素。函数用于查找第一个大于给定值的元素。如果不存在,则返回的结果与。的元素的迭代器(如果所有元素都小于。

2301_79470071的博客 743

dji psdk开发 关于SDK认证芯片的使用

Payload SDK V3.10.0 于 2025-1-8 发布,增加了 Matrice 4T/4E 机型支持,同时也增加了 DJI SDK 认证芯片(DJI SDK CC)功能支持。关于认证芯片的介绍大疆 SDK 认证芯片(DJI SDK Certified Chip),简称 DJI SDK CC,用于认证基于 DJI Eport/Eport-Lite 接口开发的第三方负载设备,确保设备能够正常工作并与无人机可以进行有效通信,起到负载安全认证和功能授权的作用。

热爱生活,忠于自己 2146

经典二分库函数

断更周报许久,来个存稿。

j2ry_s6nc1rl0的博客 394

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

STL中的二分查找——lower_bound 、upper_bound 、binary_search

二分查找很简单,原理就不说了。STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提)。        其中如果寻找的value存在,那么lower_bound返回一个迭代器指向其中第一个这个元素。upper_bound返回一个迭代器指向其中最后一个这个元素的下一个位置(明确点说就

sicofield的专栏 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【C++ STL算法】二分查找 lower_bound、upper_bound、equal_range、binary_search

第 1 个迭代器指向的是 [first, last) 区域中。第 2 个迭代器指向的是 [first, last) 区域中。成功找到和 val 相等的元素,则返回 true。:这 2 个迭代器要么。

普罗米修斯的博客 1475

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())

一:起因 (1)STL中关于二分查找的函数有三个:lower_bound 、upper_bound 、binary_search  —— 这三个函数都运用于有序区间(当然这也是运用二分查找 的前提),下面记录一下这两个函数; (2)ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个

思緒凌亂 9511

STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())[11]

原始链接 https://blog.youkuaiyun.com/u010700335/article/details/41323427   一:起因 (1)STL中关于二分查找的函数有三个:lower_bound 、upper_bound 、binary_search  —— 这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数; (2)ForwardIter lowe...

lattice的博客 1617

STL中提供-二分查找算法(binary_search lower_bound upper_bound equal_range)

STL包含四种不同的二分查找算法,binary_search    lower_bound  upper_bound   equal_range.他们作用的range是已sorted。 binary_search试图在已排序的[first, last)中寻找元素value。如果[first, last)内有等价于value的元素,它会返回true,否则返回false,它不返回查找位置。

zhongkeli的专栏 1万+

C++二分查找库函数 lower_bound,upper_bound,binary_search 的简单使用

C++二分查找库函数 lower_bound,upper_bound,binary_search 的简单使用 需要 #include <algorithm> lower/upper_bound函数 参数列表及其解释: /* param 1 : 要查找的序列首地址 param 2 : 要查找的地址结束地址 param 3 : 要查找的元素地址 return : 使用二分查找,若存在,...

AKGWSB 's blog 1923

STL算法 | 查找函数 find()、二分查找binary_search/upper_bound、子序列查找search

文章目录一、find系列函数(单个元素顺序查找)1. find 搜索等于 value 的元素。2. find_if 搜索谓词 p 对其返回 true 的元素3. find_if_not 搜索谓词 q 对其返回 false 的元素。测试用例一、二分查找系列函数(单个元素二分查找)1. lower_bound 二分查找大于等于2. upper_bound 二分查找大于3. equal_range 二分查找等价区间4. binary_search 二分查找是否存在元素value测试用例三、子序列查找 search

专注于C/C++/Linux领域创作 2392

STL源码剖析 lower_bound | upper_bound | binary_search

lower_bound 二分查找的一种版本,试图在已经排序的区间内查找元素value,如果区间内存在和value数值相等的元素,便返回一个迭代器,指向其中的第一个元素。 如果没有数值相等的元素,会返回假设这个元素存在的前提下应该出现的位置,也就是返回一个指向第一个不小于value的元素的迭代器 如果查询的数值value大于区间内任何一个元素则返回last 综上所述:lower_bound返回的是不破坏排序状态的前提下,可插入value的第一个位置 版本一使用operator< 版本二使用

CHYabc123456hh的博客 1768

STL之lower_bound()、upper_bound()、binary_search

二分查找很简单,原理就不说了。STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提)。        其中如果寻找的value存在,那么lower_bound返回一个迭代器指向其中第一个这个元素。upper_bound返回一个迭代器指向其中最后一个这个元素的下一个位置(明确点说就

一点也不二 878

二分查找binary_search()、lower_bound()、upper_bound()的用法

1.binary_search:查找某个元素是否出现。(排好序,递增) a.函数模板:binary_search(arr[],arr[]+size , indx) b.参数说明: arr[]: 数组首地址 size:数组元素个数 indx:需要查找的值 c.函数功能: 在数组中以二分法检索的方式查找,若在数组(要求数组元素非递减)中查找到indx元素则真,若查找不...

Hello,小高同学 735

C++ STL <algorithm> 二分查找 lower_bound, upper_bound,equal_range和binary_search底层实现分析

函数名功能要求数组从小到大非递减排序,从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。要求数组从小到大非递减排序,从数组的begin位置到end-1位置二分查找第一个大于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字在数组中的下标。

weixin_43571107的博客 853
上一篇: 迭代法求解方程(组)的根
下一篇: Equalize the Remainders
codertcm
博客等级 码龄8年 80粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值