二元搜尋法
Binary Search Algorithm
Binary Search Algorithm
二元搜尋法(binary search algorithm)又稱二分搜尋演算法或對數搜尋演算法
是指對於已排序資料進行折半搜尋,如果欲搜尋數字比中間值大,那左半部比中間值小的數字就不用再比較,待搜尋資料量馬上少了一半。假設已排序的資料如下,在這 13 個數字中要搜尋數字 67 是否存在,若使用二元搜尋法,只需要找 4 次就可以找到,效率極高。
數列: 12 13 27 34 39 42 58 60 67 71 88 92 95
💡適用狀況: 須為已排序的遞增或遞減數列
💡特點: 每次比較都使搜尋範圍縮小一半
來源:康軒113_2下
🖱️二元搜尋法演示(康軒版)🖱️
圖片來源:翰林八下資訊科技教材
我們可以從以上的流程,歸納出實作的步驟:
1. 從已排序原始資料的二分位置,取出元素。
2. 將取出元素與目標資料加以比較。若目標資料大於該元素,則排除左半部數列;目標資料小於該元素,則排除右半部數列。
3. 重複第 1、2 點的步驟,直到找到目標資料或原始資料所有元素均比較完為止。
想想看: 比較循序搜尋法及二元搜尋法,你覺得兩者的差異是甚麼?
循序搜尋法:
優點: 搜尋方式最直接也最簡單,資料無需事先排序,
缺點: 但速度較慢,較沒效率,若搜尋資料量大時會耗費很多時間。
二元搜尋法
優點:和循序搜尋法相較起來,尤其資料量大時其搜尋速度較快。
缺點:必須事先將資料排序好。
來源:康軒113_2下
二元搜尋法練習
同學可以自行利用一副撲克牌來練習二元搜尋法
終極密碼遊戲
(1) 請同學利用循序搜尋法或二元搜尋法猜猜老師預設的密碼(1-100中的一個數字)
(2) 進階版: 猜猜老師預設的密碼(4個數字的組合--- 0-9中四個不重複的數字)