STL 二分查找 upper_bound和lower_bound用法
生活随笔
收集整理的這篇文章主要介紹了
STL 二分查找 upper_bound和lower_bound用法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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;///在右邊子序列中查找}elselen=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; }轉載于:https://www.cnblogs.com/nanfenggu/p/7899991.html
總結
以上是生活随笔為你收集整理的STL 二分查找 upper_bound和lower_bound用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信公众号的搭建-第五天-自定义菜单
- 下一篇: Hibernate5环境搭建