二分搜尋法,它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用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 這種方法沒有很好的利用排序這個性質。其次就是二分搜尋技術,二...