二分的两种重要模型
2016-08-14 23:53
162 查看
STL中的两个函数
(详见:点我):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的位置。
二分的两种重要模型:
二分最重要的:1.当前待查找序列,肯定包含目标元素 2.每次待查找序列的规模都会变小。①:0000001111111,寻找一个满足条件的最左;
code:
int binary_search(int array[],int key) { int begin=0; int end=array.size(); while(begin<end) { int mid=begin+(end-begin)/2; if(a[mid]==1) end=mid; else begin=mid+1; } return begin; }
②:对于1111000000,寻找一个满足条件的最右;
code……
int binary_search(int array[],int key) { int begin=0; int end=array.size(); while(begin<end) { int mid=begin+(end-begin+1)/2; if(a[mid]==1) begin=mid; //一定会变大 else end=mid-1; //一定会变小 } return begin; }
相关文章推荐
- OpenGL学习 : 简单的线段OpenGL程序
- poj3762 The Bonus Salary! (mcmf 区间K覆盖问题)
- popwondows简单用法
- Retrofit情景分析
- Java集群优化——dubbo+zookeeper构建高可用分布式集群
- 26最小公倍数 lowest common multiple
- python 开发简单爬虫 by CL(一)
- Leetcode 92. Reverse Linked List II (Medium) (cpp)
- one
- uva 572 Oil Deposits
- 在 Mac 端获取【网易云音乐】付费音乐的播放地址(注意下载要坚决支持正版!)
- Android 联系人数据库介绍以及对联系人的基本操作
- 灯泡的研究
- Android 联系人数据库介绍以及对联系人的基本操作
- 2016中国大学生程序设计竞赛 - 网络选拔赛
- 0utLook 2010打开后无法连接到CAS 阵列名
- SQL通配符
- go-并发
- 嵌入式学习--step10--实践篇--MPU6050
- 欢迎使用CSDN-markdown编辑器