STL中提供 二分查詢演算法

2021-07-06 03:40:13 字數 911 閱讀 8455

stl包含四種不同的二分查詢演算法,binary_search    lower_bound  upper_bound   equal_range.他們作用的range是已sorted。

binary_search試圖在已排序的[first, last)中尋找元素value。如果[first, last)內有等價於value的元素,它會返回true,否則返回false,它不返回查詢位置。

lower_bound它試圖在已排序的[first,last)中尋找元素value。如果[first, last)具有等價於value的元素,lower_bound返回乙個iterator指向其中第乙個元素。如果沒有這樣的元素存在,它便返回假設這樣的元素存在的話,會出現的位置。即指向第乙個不小於value的元素。如果value大於[first, last)的任何乙個元素,則返回last。

upper_bound它試圖在已排序的[first,last)中尋找value,返回可安插value的最後乙個合適的位置。如果value存在,lower_bound 返回的是指向該元素的iterator。相較之下upper_bound並不這麼做,它返回value可被安插的最後乙個合適位置。如果value存在,那麼它返回的iterator將指向value的下乙個位置,而非value自身。

equal_range的返回值本質上結合了lower_bound和upper_bound兩者的返回值。其返回值是一對iterator i 和 j , 其中i是value可安插的第乙個位置,j則是value可安插的最後乙個位置。可以推演出:[i,j)中的每個元素都等價於value,而且[i, j)是[first, last)之中符合上述性質的乙個最大子區間。  演算法lower_bound返回該range的第乙個iterator, 演算法upper_bound返回該range的past-the-end iterator,演算法equal_range則是以pair的形式將兩者都返回。

STL二分查詢演算法

主要是2個東西 lower bound和upper bound的用法 1 lower bound int p lower bound a,a n,x a 在已排陣列a中尋找x的位置易知其含義 是尋找大於或等於x的第乙個位置 int a 7 sort a,a 7 int p lower bound a...

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...