關於二分查詢

2021-06-12 04:40:32 字數 830 閱讀 9367

面試過很多人,對於初級程式設計師來說,我一般會給他簡單的已經比較成熟的演算法來考察他,一來來他對既有演算法的熟悉度,二來考察他對於一般程式設計問題的邏輯思維能力,

二分查詢是有序數列中查詢的常用演算法,也是比較容易實現的查詢演算法之一,

這個是stl的實現

template

randomaccessiterator __lower_bound(randomaccessiterator first,  

randomaccessiterator last,  

const t& value, compare comp, distance*,  

random_access_iterator_tag)  

else  

len = half;  

}  

return first;  

}  

下面是我在網上找到的乙個stl的簡化後的版本

int lowerbound(int array,int left,int right,int value)

{int mid=0,half=0;

int len=(right+left+1)/2;

while(len>0)

{half=len>>1;          //資料長度折半

mid=left+half;        //計算中點

if (array[mid]其實思路是一樣的,實現起來也沒有超過20行**,簡單描述是不斷的縮寫查詢的範圍,也就是縮小len, 但中間數的值小於查詢值的時候,調整first的值,同時每次查詢的時候將

查詢區間的長度折半,就這麼簡單。

關於二分查詢

在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 1 對數搜尋 英語 logarithmic search 2 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過...

關於二分查詢

一 關於二分查詢 1.查詢目標值 當right nums.size 1時,判定條件應該為left right right賦值時也應該是mid 1 當right nums.size 時,判定條件應該為left 目標值的數 int search vector nums,int target return...

關於二分查詢

luogu 1571 眼紅的medusa 二分模版題 include using namespace std int n,m,x,l,r,mid,cnt,a 110000 b 110000 c 110000 intmain if x b l cnt c cnt x for int i 1 i cou...