二分查詢總結

2021-08-07 02:56:59 字數 1034 閱讀 1034

我們假設乙個最簡單的環境,對於數x,按要求詢問它在乙個陣列a(假設從小到大)裡的位置,陣列個數為n。

1.查詢最後乙個小於x的數的位置

常見的一種要求。返回小於x的其中的最右邊乙個數的下標。

**:

int half(int x)

return r;

}

2.查詢最後乙個小於或等於x的數的位置

返回小於或等於x的其中的最右邊乙個數的下標。

int half(int x)

return r;

}

3.查詢第乙個大於x的數的位置

常見的一種要求。返回大於x的其中的最左邊乙個數的下標。

int half(int x)

return l;

}

4.查詢第乙個大於或等於x的數的位置

常見的一種要求。返回大於或等於x的其中的最左邊乙個數的下標。

int half(int x)

return l;

}

二分總結:

以上幾種寫法是比較常見基礎的。我們會發現二分的寫法有幾個套路:while(l<=r),l=mid+1,r=mid-1等等。但最重要的是根據題目要求來定邊界的處理,有時候你二分的並不一定是整數,更多情況下,你的判斷mid並不只是簡單的判斷大小,可能會寫一大堆複雜的判斷過程。

二分之外,還有三分,有興趣請看我的講解:三分查詢

練習題:

4、關押罪犯 (noip2010提高組),純二分,唯一的難度在於check。

5、聰明的質監員(noip2011提高組),純二分,附上我的講解:[noip2011][二分]聰明的質監員

以上題目,排名順序與難度大小無關(>_<)如果你沒有評測渠道,我又沒有附鏈結,那麼可以去洛谷評測,noip題它都有。

二分查詢總結

今天上csdn,發現一篇關於二分查詢演算法的文章被置頂,回帖也相當熱烈。我覺得演算法總重要的還是要了解思想,至於程式設計技巧則是其次。二分查詢在計算中演算法中的重要性不言而喻,許多變形的演算法都是基於此演變的,比如二分查詢樹等。所以此演算法程式我也打算總結一下。當然經典的演算法討論莫過於jon be...

二分查詢總結

二分查詢其實並不簡單 這個演算法有很多版本 而且變化也比較多 稍一不留神就容易寫錯 這裡總結一下 一般二分查詢 binary serach int f int array,int key,int len else cout return 1 注意判斷條件必須要這麼寫 因為比如奇數個元素 1,3,5 ...

二分查詢總結

二分查詢也稱折半查詢 bi nary sear ch binary search binar ysea rch 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。第一次寫部落格,之所以選這個演算法是因為第一次面試問了這個題,自己學習的時候也沒認真...