二分初步學習

2021-05-24 23:04:58 字數 559 閱讀 6812

二分初步學習

二分搜尋演算法是運用分治策略的典型例子。

給定已經排好序的n個元素a[0:n-1],現在要在這n 個元素中查詢乙個特定的元素x。

首先,我們比較容易想到的是順序搜尋法,逐個地比較a[0:n-1]中的元素。但是這個方法沒有充分地利用n個元素已排好序這個條件,因此在最壞的情況下,順序搜尋法需要o(n)次比較。

二分搜尋演算法充分利用了元素間的次序關係,採用分治策略,可以在最壞的情況下o(logn)的時間完成搜尋任務。

二分搜尋演算法也可以用在方程根的近似求解上。

一般地,問題可以描述為,求解方程方程f(x)=0。那麼具體採用怎樣的二分策略來搜尋方程的近似解呢?設定乙個區間[a,b]滿足f(a)*f(b)<0,對於連續函式f(x)來說,一定存在乙個根x在區間[a,b]使得f(x)=0成立。不妨假設f(a)<0,f(b)>0,那麼二分的思想就很明確了。同樣,每次將區間分成兩個大致相同的子區間[a,mid]、[mid,b](mid=(a+b)/2.0),如果f(mid)>0,則只需在左半個區間[a,mid]中進行搜尋;如果f(mid)<0,相應地我們只需要在問題的右半個區間[mid,b]中進行搜尋即可。

整體二分初步

整體二分是個很神的東西,它可以把許多複雜的資料結構題化簡。它的精髓在於巧妙地利用了離線的特點,把所有的修改 詢問操作整體把握。先說說第k大數吧,這種問題是整體二分的標誌性題目,什麼劃分樹啊,主席樹啊,樹套樹啊見了整體二分都得自嘆不如。首先對於一次詢問來說我們可以二分答案,然後通過驗證比答案大的數有多...

二分與二分答案學習

判斷left,mid,right的符號進行區間的精確。如下為遞迴二分求零點的操作 double find zero point double left,double right,double precesion double mid right left 2 if f mid 0 if f mid ...

二分學習小結

乙個經典問題 如何在乙個嚴格遞增序列a中找出給定的數x。二分查詢的高效之處在於,每一步都可以去除當前區間中的一半元素 因此其時間複雜度是o logn 優秀!需要注意的是 二分查詢的過程與序列的下標從0開始還是從1開始無關 include include include include include...