1. 程式人生 > >資料結構與演算法:二分查詢

資料結構與演算法:二分查詢

資料結構與演算法:二分查詢

最近看到一本關於資料結構的書,甚是有趣,稍以記載,方便以後回憶!
一、二分查詢
假設要在電話簿中找一個名字以K打頭的人,(現在誰還用電話簿!)可以從頭開始翻頁,直到進入以K打頭的部分。但你很可能不這樣做,而是從中間開始,因為你知道以K打頭的名字在電話簿中間。這是一個查詢問題,在前述所有情況下,都可使用同一種演算法來解決問題,這種演算法就是二分查詢。
二分查詢是一種演算法,其輸入是一個有序的元素列表(必須有序的原因稍後解釋)。如果要查詢的元素包含在列表中,二分查詢返回其位置否則返回null。
舉個例子
在這裡插入圖片描述
在這裡插入圖片描述
**這是簡單查詢,更準確的說法是傻找。每次猜測都只能排除一個數字。如果我想的數字是99,你得猜99次才能猜到!

更佳的查詢方法:**
比如手
在這裡插入圖片描述
在這裡插入圖片描述
僅當列表是有序的時候,二分查詢才管用。例如,電話簿中的名字是按字母順序排列的,
因此可以使用二分查詢來查詢名字。

其實,以上關於二分法的最大次數可以用資訊熵來計算和理解,下一節講時間複雜度時細講