C STL 二分查詢

2022-04-03 14:28:35 字數 1050 閱讀 9572

**自 

二分查詢的函式有 3 個: 參考:c++ lower_bound 和upper_bound

lower_bound(起始位址,結束位址,要查詢的數值) 返回的是數值第乙個出現的位置。

upper_bound(起始位址,結束位址,要查詢的數值) 返回的是數值最後乙個出現的位置。

binary_search(起始位址,結束位址,要查詢的數值)  返回的是是否存在這麼乙個數,是乙個bool值

1  函式lower_bound()  參考:有關lower_bound()函式的使用

功能:函式lower_bound()在first和last中的前閉後開區間進行二分查詢,返回大於或等於val的第乙個元素位置。如果所有元素都小於val,則返回last的位置.

注意:如果所有元素都小於val,則返回last的位置,且last的位置是越界的!!

2 函式upper_bound()

功能:函式upper_bound()返回的在前閉後開區間查詢的關鍵字的上界,返回大於val的第乙個元素位置

注意:返回查詢元素的最後乙個可安插位置,也就是「元素值》查詢值」的第乙個元素的位置。同樣,如果val大於陣列中全部元素,返回的是last。(注意:陣列下標越界)

ps

lower_bound(val):返回容器中第乙個值【大於或等於】val的元素的iterator位置。

upper_bound(val): 返回容器中第乙個值【大於】

舉個例子,1 2 3 5 序列中查詢4

lower_bound(4) 是5的迭代器,upper_bound(4)也是5的迭代器,但binary_search(4) 返回的是false

而對於,1,2,3,4,4,4,4,5,6,7查詢4

lower_bound(4)是第4個元素的迭代器,upper_bound(4)是5的迭代器,binary_search(4)返回的是true

c stl 二分查詢

binary search a,a n,key 返回是否存在值bool型的 lower bound a,a n,key 下面兩個都是指標型的 upper bound a,a n,key 公升序排列的容器 lower bound const key type key 返回乙個迭代器,指向鍵值 key的...

c STL 二分查詢

人生第一篇部落格和大家分享一下上週周賽的一道題目二分查詢 題目如下 e 二分查詢 一 蒜頭君手上有個長度為 n的陣列 a。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問整數 x是否在陣列 a 中。輸入格式 第一行輸入兩個整數 n和 m,分別表示陣列的長度和查詢的次數。...

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...