c++ 二分查找的函数 lower_bound & upper_bound & binary_search
2018-02-05 11:23
579 查看
简介
C++ STL 中二分查找函数主要有这三种:
•lower_bound()•upper_bound()
•binary_search()
这三个函数都运用于有序区间。
用法
1. lower_bound(a+1,a+1+n,x)-a
返回一个非递减序列 [1,n] 中的第一个大于等于值 x 的位置 (int)。程序相当于:
int lower_bound() { int l=1,r=n; while(l<r) { int mid=(l+r)/2; if(a[mid]>=x) r=mid; else l=mid+1; } return l; }
2. upper_bound(a+1,a+1+n,x)-a
返回一个非递减序列 [1,n] 中的第一个大于值 x 的位置 (int)。程序相当于:
int upper_bound() { int l=1,r=n; while(l<r) { int mid=(l+r)/2; if(a[mid]>x) r=mid; else l=mid+1; } return l; }
3. binary_search(a+1,a+1+n,x)
返回一个非递减序列 [1,n] 中是否存在值 x。(bool)。程序相当于:
bool upper_bound() { int l=1,r=n; while(l<r) { int mid=(l+r)/2; if(a[mid]>=x) r=mid; else l=mid+1; } if(a[l]==x) return true; else return false; }
总结
这些二分查找函数时间复杂度都是 O(logn),十分简便,缩短了代码,节约了时间,可以多多使用!!相关文章推荐
- c++ 二分查找的函数 lower_bound & upper_bound & binary_search
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())
- (转)STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- binary_search()、upper_bound()、lower_bound() 二分查找
- STL之二分查找(binary_search(),lower_bound(),upper_bound() )
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL中二分查找相关算法(binary_search, lower_bound, upper_bound, equal_range)
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- 二分查找与STL中的lower_bound(),upper_bound(),binary_search()
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL 二分查找三兄弟(lower_bound(),upper_bound(),binary_search())
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL中的二分查找——lower_bound 、upper_bound 、binary_search
- STL中的二分查找——lower_bound 、upper_bound 、binary_search