二分搜尋演算法

2021-08-18 02:26:41 字數 1328 閱讀 6977

在電腦科學中,二分搜尋(英語:binary search),也稱折半搜尋(英語:half-interval search)、對數搜尋(英語:logarithmic search),是一

種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束;如果某一特定元素大於或者小於中

間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜

索範圍縮小一半。

給予乙個包含n個帶值元素的陣列a或是記錄a0,…,an-1,使a0<=…<=an-1,以及目標值t,還有下列用來搜尋t在a中位置的子程式。

1. 令l為0,r為n-1。

2. 如果l>r,則搜尋以失敗告終。

3. 令m(中間值元素)為 (l+r)/2。

4. 如果m

/**

* 遞迴二分查詢法

*@param arr 公升序int陣列

*@param start 查詢的起始位置

*@param end 查詢的結束位置

*@param value 查詢的值

*@return 在陣列中的位置

*/public

static

intbinary_search(final

int arr, int start, int end, int value)

int mid = start + (end - start) / 2;

if (value < arr[mid]) else

if(value > arr[mid]) else

}

/**

* while迴圈二分查詢法

*@param arr 公升序int陣列

*@param start 查詢的起始位置

*@param end 查詢的結束位置

*@param value 查詢的值

*@return 在陣列中的位置

*/public

static

intbinary_search2(final

int arr, int start, int end, int value) else

if (value > arr[mid]) else

}return result;

}

引用自維基百科

二分搜尋演算法

今天我勉強搞懂了二分查詢演算法,我覺得很有收穫,這是個不錯的演算法,希望還不知道 不懂二分演算法的朋友能看看!二分查詢 二分查詢的前提是陣列一定是有序的 傳入乙個陣列 t 傳入乙個查詢元素 t key 返回查詢結果 class myutil else if key.compareto x mid 0...

二分搜尋演算法

1.x y 2與x y x 2區別 運算子 取整朝零方向取整,5 2 2,5 2 2 用x y x 2好處是確保分界點總是靠近區間起點 2.基本二分查詢的實現方法 int bsearch int a,int x,int y,int v return 1 3.設lower bound和upper bo...

二分搜尋演算法

一段區間,劃分為兩段 左區間 右區間 首先 設定 l 0,r arr.length 1 設定兩端的指標 int mid l r 1 check mid 然後!這個地方 mid 需要 1,不然會死迴圈,int mid l r 1 1 如果為true,則答案 在 mid,r 替換 l,r l mid f...