STL二分查詢的使用

2021-09-25 16:15:40 字數 1107 閱讀 6677

使用物件:有序陣列

標頭檔案:algorithm

lower_bound()返回值是乙個迭代器,返回指向大於等於key的第乙個值的位置

函式引數中的陣列邊界a,a+8為左閉右開。查詢失敗返回後乙個位址(越界位址)

#include 

#include

using namespace std;

intmain()

;printf

("%d"

,lower_bound

(a,a+8,

6)-a);

return0;

}

輸出:5

將key換成10,所有val都小於key,返回last的位置

#include 

#include

using namespace std;

intmain()

;printf

("%d"

,lower_bound

(a,a+8,

10)-a);

return0;

}

輸出: 8

upper_bound()函式,它返回大於等於key的最後乙個元素

例題:cf1077e

ac**:

#include .h>

using namespace std;

const

int maxn =

1e6+7;

int a[maxn]

;map<

int,

int>

mp;intmain()

++a[mp[x]];

}sort

(a+1

,a+cnt+1)

;int sum=0;

for(

int j=

1;j<=n;

++j)

sum=

max(sum,m);}

printf (

"%d\n"

,sum)

;return0;

}

stl 二分查詢

在stl中對二分查詢進行了封裝,有兩種 upper bound,lower bound。例如 pos lower bound a,a n,value 查詢value值在長度為n的陣列a中的位置 關於返回值,函式lower bound 在first和last中的前閉後開區間進行二分查詢,返回大於或等於...

STL 二分查詢

實現原始碼 1.在乙個遞增的陣列 或vector 中查詢元素屬於 s e 的下標 2.查詢遞增陣列中元素是否存在 使用binary search 注 對於結構體,要麼過載小於符號 bool operator 要麼定義有小於符號含義的cmp函式。3.應用在遞減序列中 include include i...

二分搜尋與STL二分查詢

用法 搜尋非遞減數列中是否包含某個元素 當資料量比較大的時候,二分比線性搜尋高效得多。流程 查詢36 實現 物件是非遞減序列,如果當資料無序時,需要預先進行一次排序。int binarysearch int a,int key,int n n為陣列長度 rerurn 0 陣列a中不存在key 複雜度...