分治演算法基本思想:將乙個規模為 n 的問題分解為 k 個規模較小的子問題,這些子問題相互獨立且與原問題相同;
給定已排好序的 n 個元素 array[0:n-1],現要在這 n 個元素找出特定元素x;
首先較容易想到的是用順序搜尋方法,逐個比較 array[0:n-1] 中元素,直至找出元素 x 或搜尋整個陣列後確定 num 不在其中。這個方法沒有很好的利用 n 個元素排好序這個有利條件,因此在最壞的情況下,順序搜尋方法需要 o(n) 次比較
二分搜尋演算法充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用 o(logn) 時間完成搜尋任務;
publicclass
binarysearch ;
/*** 二分查詢
*/public
static
integer binarysearch(integer num)
integer left = 0;
integer right = array.length - 1;
while (left <=right)
if (array[mid] >num)
if (array[mid] }
return -1;
}public
static
void
main(string args)
}
每天進步一點,繼續前行......
演算法 二分搜尋
思路 首先從陣列中間的數把陣列分成兩部分,如果查詢的數比中間的數大,說明接下來需要查詢右邊的部分,令中間的的下標 1為下一次開始查詢的開始位置,再從low到high之間查詢,一直迴圈。root bogon code cat erfen.c include int work int x,int a,i...
基礎演算法 二分
二分模板 bool check int x 檢查x是否滿足某種性質 區間 l,r 被劃分成 l,mid 和 mid 1,r 時使用 int bsearch 1 int l,int r return l 區間 l,r 被劃分成 l,mid 1 和 mid,r 時使用 int bsearch 2 int...
二分搜尋演算法
今天我勉強搞懂了二分查詢演算法,我覺得很有收穫,這是個不錯的演算法,希望還不知道 不懂二分演算法的朋友能看看!二分查詢 二分查詢的前提是陣列一定是有序的 傳入乙個陣列 t 傳入乙個查詢元素 t key 返回查詢結果 class myutil else if key.compareto x mid 0...