STL 二分查找 upper_bound和lower_bound用法
来源:互联网 发布:java游戏主界面设计 编辑:程序博客网 时间:2024/06/06 01:35
STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。
这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数。
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的位置。
lower_bound和upper_bound如下图所示:
1.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; len=len-half-1;///在右边子序列中查找 } else len=half;///在左边子序列(包含middle)中查找 } return first;}
2.upper_bound函数源代码:
int upper_bound(int *array,int size,int key){ int len=size-1; int half,middle; while(len>0) { half=lem>>1; middle=first+half; if(array[middle]>key)///中位数大于key,在包含last的左半边序列中查找。 len=half; else { first=middle+1;///中位数小于等于key,在右半边序列中查找。 len=len-half-1; } } retrurn first;}
阅读全文
0 0
- STL 二分查找 upper_bound和lower_bound用法
- 二分查找和lower_bound & upper_bound
- STL中的二分查找--lower_bound/upper_bound/binary_search
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL中的二分查找,lower_bound();与upper_bound();
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL 二分查找(binary_search(),lower_bound(),upper_bound() )
- 查找和二分查找 lower_bound upper_bound
- 二分查找,lower_bound,upper_bound
- 【lower_bound】【upper_bound】二分查找
- stl lower_bound 和 upper_bound
- STL lower_bound和upper_bound
- [STL] lower_bound和upper_bound
- STL中提供-二分查找算法(binary_search lower_bound upper_bound equal_range)
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL中提供-二分查找算法(binary_search lower_bound upper_bound equal_range)
- Http网络请求数据
- 对输入数据进行多个异常处理
- OpenCV-005:图片的基本像素操作
- 获取文件的信息
- java序列化
- STL 二分查找 upper_bound和lower_bound用法
- 关于java数据库章节connection连接不成功的时候!!!
- triplet loss总结
- js简单字母验证码
- swagger与springMVC、maven整合
- uboot的环境变量操作
- angularJs自定义过滤器
- workqueue机制
- 创建类Person和对象