二分搜尋法

2022-07-30 21:21:13 字數 787 閱讀 6380

二分搜尋法,它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用o(log n)完成搜尋任務。它的基本思想是,將n個元素分成個數大致相同的兩半,取a[n/2]與欲查詢的x作比較,如果x=a[n/2]則找到x,演算法運算終止。

總結一下,二分搜尋需要注意的點有以下幾條:

陣列一定記得要先排序!!!(不排序會出現各種莫名其妙的返回值)

取中位值的時候,需要注意整數加法是否會溢位的問題。

當查詢不在陣列內的元素時,需要返回-1代表沒有找到。

如果出現待查詢元素有重複的元素,需要確定返回的是哪乙個元素的下標。

/*

* * description : 二分查詢。

* @param array 需要查詢的有序陣列

* @param from 起始下標

* @param to 終止下標

* @param key 需要查詢的關鍵字

* @return

*/public

static

> int binarysearch(e array, int

from, int

to, e key) throws exception

if (from

<=to)

else

if (temp.compareto(key) < 0

) else

}return binarysearch(array, from

, to, key);

}

這是二分搜尋法的**例題。

二分搜尋法

一 問題描述 給定n個元素,這些元素是有序的,從陣列中查詢特定的元素x。個人覺得二分法搜尋是分治法裡面最簡單的乙個搜尋演算法了,就是設定乙個下界low和上界high,然後再設乙個指標mid mid low high 2 然後隨著每次搜尋mid會在兩個區間之間 low,mid 1 和 mid 1,hi...

二分法,二分搜尋

二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...

分治法 二分搜尋

二分搜尋技術是利用分治法思想的的典型例子 問題描述 給定已經排好序的n個元素a 0 n 1 要在這n個元素中找出乙個特定元素x的下標 首先比較容易想到的是遍歷這個n個元素,依次尋找,這樣做的話,最壞情況下需要做n次比較,時間複雜度為o n 這種方法沒有很好的利用排序這個性質。其次就是二分搜尋技術,二...