由于对于二分法一直都不是很熟悉,这里就用C++中的lower_bound和upper_bound练练手。这里用python实现

lower_bound和upper_bound本质上用的就是二分法,lower_bound查找有序数组的第一个小于等于目标数的,upper_bound查找有序数组第一个大于等于目标数的

下面是python实现的lower_bound代码

def lower_bound(arr,target,i,j):
while i < j:
mid = i + (j - i) / 2
mid = int(mid)
if target > arr[mid]:
i = mid + 1
else:
j = mid
return mid

  

upper_bound的python代码

def upper_bound(arr,target,i,j):
while i < j:
mid = int(i + (j - i) / 2)
if target > arr[mid]:
i = mid + 1
else:
j = mid
print(mid)
return mid

  

python实现lower_bound和upper_bound的更多相关文章

  1. STL源码学习----lower_bound和upper_bound算法

    转自:http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html 先贴一下自己的二分代码: #include <cstdio&g ...

  2. [STL] lower_bound和upper_bound

    STL中的每个算法都非常精妙, ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一 ...

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

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

  4. STL中的lower_bound和upper_bound的理解

    STL迭代器表述范围的时候,习惯用[a, b),所以lower_bound表示的是第一个不小于给定元素的位置 upper_bound表示的是第一个大于给定元素的位置. 譬如,值val在容器内的时候,从 ...

  5. STL 源码分析《5》---- lower_bound and upper_bound 详解

    在 STL 库中,关于二分搜索实现了4个函数. bool binary_search (ForwardIterator beg, ForwardIterator end, const T& v ...

  6. lower_bound和upper_bound算法

    参考:http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html ForwardIter lower_bound(ForwardIte ...

  7. lower_bound 和 upper_bound

    Return iterator to lower bound Returns an iterator pointing to the first element in the range [first ...

  8. STL源码学习----lower_bound和upper_bound算法[转]

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

  9. [转] STL源码学习----lower_bound和upper_bound算法

    http://www.cnblogs.com/cobbliu/archive/2012/05/21/2512249.html PS: lower_bound of value 就是最后一个 < ...

随机推荐

  1. tomcat启动错误org.springframework.beans.factory.CannotLoadBeanClassException的解决

    tomcat启动时一直报这个错误,但是报错的类确实存在. 清空tomcat,更新maven项目,重配tomcat都没有解决. 最后解决办法: Eclipse环境:Project-->clean ...

  2. linux crontab 计划任务设置 (简结)

    命令: crontab  -l  查看当前运行的计划任务 crontab  -e  编辑当前运行计划任务 修改或添加 VIM编辑器用法:按 i 键进入编辑文本状态, esc 结束编辑状态 , :wq ...

  3. Annotation原理

    为什么使用注解: 1.通过注解,可保存源数据在Java源代码中:并且注解不同于注释,注解享有编译期的类型检查保护. 2.可在描述符性质的类或接口中抽取重复性的工作,通过注解来简化与自动化这些工作. 注 ...

  4. oracle数据库的配置文件

    url=jdbc:oracle:thin:@localhost:1521:orcldriver=oracle.jdbc.OracleDriverusrname=GJQ   (PLSQL Develop ...

  5. 07 consistent gets、db block gets的简单精辟的理解

    consistent gets.db block gets的简单精辟的理解     consistent gets:一致性读,为了保持读一致性而获取的块,其中可能包括undo block,也有包括非u ...

  6. 我们比较常见的PHP实现openSug.js参数调试

    这是一款利PHP对百度搜索下拉框提示免费代码实现参数配置调试的程序源代码. 由想要对网站进行搜索下拉调试的站长朋友们进行方便.快速的效果演示,具体参考下面的PHP代码. 如何使用? 请新建一份PHP文 ...

  7. win下python环境搭建以及安装pip、django

    1. 安装python并配置 下载安装python,这里我下载的是python2.7,听说2.7比较好用 地址:https://www.python.org/downloads/source/ 记住你 ...

  8. Selenium_python自动化跨浏览器执行测试(简单多线程案例)

    发生背景: 跨浏览器测试是功能测试的一个分支,用以验证web应用在不同浏览器上的正常工作,通常情况下,我们都期望web类应用能够被我们的用户在任何浏览器上使用,例如有的人喜欢IE浏览器上使用,有的人喜 ...

  9. GD32F450 200M时USB不稳定

    使用GD32F450的demo修改usb驱动,发现120M和168M时正常,200M时很不稳定.怀疑USB时钟分频有问题,一查果然是,记录如下: 200M是库函数主时钟分频代码如下 static vo ...

  10. Pytorch之Variable求导机制

    自动求导机制是pytorch中非常重要的性质,免去了手动计算导数,为构建模型节省了时间.下面介绍自动求导机制的基本用法. #自动求导机制 import torch from torch.autogra ...