c++ 二分查找的函数 lower_bound upper_bound binary_search
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                c++ 二分查找的函数 lower_bound  upper_bound  binary_search
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                簡介
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的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: JZOJ 4919. 【NOIP2017
- 下一篇: JZOJ 4932. 【NOIP2017
