二分查詢之新手篇 函式使用

2022-08-01 06:27:14 字數 985 閱讀 6390

首先介紹c++萬能標頭檔案

#include

using namespace std;(比較適合偷懶,但是不能確保不會出錯)(用還是可以的,粗錯了再回頭來改嘛)owo

接下來介紹一下兩個二分查詢函式;

upper_bound()與lower_bound();

forwarditer lower_bound(forwarditer first, forwarditer last,const _tp& val)演算法(函式)返回乙個非遞減序列[first, last)中的第乙個大於等於值val的位址

forwarditer upper_bound(forwarditer first, forwarditer last, const _tp& val)演算法(函式)返回乙個非遞減序列[first, last)中的第乙個大於值val的位址

參考:upper_bound(r,l,key)

r:代表陣列中的首位址;l代表陣列的末尾位址;key代表我們要查詢的那個數值;

upper_bound反回的是陣列中(排序完成的數列)大於key的那個資料的位址;

同理lower_bound返回的是大於等於key的那個資料的位址。

參考:例題:入門基礎之二分查詢 

陣列a有n個元素,元素值保證不降(即陣列滿足a1<=a2<=a3<=…<=ak<=…<=an )。

你的任務是,找到陣列中大於數字key的所有元素中最小的那個。

如:每組第一排有兩個數字n,m,分別代表陣列的元素個數和詢問的次數。(1<=n,m<=10^5)

第二排有n個整數,表示陣列的n個元素的值。(1<=ai<=10^5)

接下來有m排,每排有乙個整數key(1<=key<=10^5)

如果沒有所求key值用-1代替;

#includeusing

namespace

std;

intmain()

}return0;

}

二分查詢篇

小鈴鐺 2019.10.14 如果沒有eclipse,讓你手寫呢!這種方法用的是遞迴實現 第一種方法 public class binarysearch int middle low high 2 if arr middle key else if arr middle arr high low h...

二分查詢函式的使用

二分查詢函式的使用 lower bound 和upper bound 都是利用二分查詢的方法在乙個排好序的陣列中進行查詢的。在從小到大的排序陣列中,lower bound begin,end,num 從陣列的begin位置到end 1位置二分查詢第乙個大於或等於num的數字,找到返回該數字的位址,不...

python之遞迴函式,二分查詢

遞迴函式一直都是我們所覺得難理解的以一種方式,但其實,也很好理解的,遞迴函式就是自己呼叫自己。就是在重複的做同一件事情。只是有的時候,也最好不要使用遞迴函式,因為你的函式一旦呼叫,就要開闢新的記憶體空間。不利於程式的執行。python對你記憶體乙個保護機制,預設只能遞迴到998層。來看個例子吧。這個...