基本演算法介紹-搜尋


二分搜尋法(Binary Search)


1到100的終極密碼,一個個從頭慢慢猜最壞要猜100次。但用二分搜尋法(Binary Search)每次從中剖半,留下正確的部分再剖半,7次就能猜出來了。當放大到40億個數字的終極密碼,一個個從頭慢慢猜最壞要猜40億次;後者只要32次就能猜出來了。

如果搜尋的數列已經有排序,應該儘量利用它們已排序的特性,以減少搜尋比對的次數,這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。

 

資料來源:Animations from Grokking Algorithms

原始影片https://goo.gl/NM3eku

A.圖解

首先,我們將搜尋問題簡化為數字的搜尋。假設原始資料有:5、8、10、1、7 這 5 個隨機數字,在二分搜尋法中,我們先打開最中間的櫃子,發現裡面的數字是 41。因為 55 比 41 大,因此我們知道從一號櫃到三號櫃都不會有 55,接下來只需要檢查五號櫃到七號櫃。 同樣的邏輯,我們打開剩下三個可能性中最中間的櫃子,發現六號櫃裡面的數字是 61,因為 61 比 55 大,我們可以知道七號櫃的數字一定也比 55 大,得知 55 一定就在五號櫃之中。

B.影片

 

牛刀小試

活動設計-二分搜尋法(Binary Search)

猜謎遊戲

思考問題

想想看此類循序搜尋法有何特色呢?

參考網站


搜尋方法的時間複雜度(花費時間)

簡易搜尋,我們可以知道最壞的情況就是剛好七個步驟(要找的數字是 80 )

二分搜尋法,我們可以先練習去計算各種情況需要的步驟,而最終的答案如下表:


高中課綱

從上表我們可以發現,二分搜尋法最慘最慘,也只需要三個步驟。 推廣到有 n 個櫃子時,我們可以發現:二分搜尋法在每進行一個步驟時,就可以排除掉一半的可能性。每次都能減少一半,因此二分搜尋法最糟最糟也只需要以 2 為底的 log n 個步驟就能完成。


偷插電資訊科學Scratch

活動設計-程式海戰棋遊戲

https://sites.google.com/a/ntjh.ntct.edu.tw/105pljh/home/07-sou-suo-yan-suan-fa


二分搜尋法(Binary Search)實作篇(老師可依學生程度實作.此為高一課綱)

活動設計-體驗SCRATCH利用二分搜尋 binary search製作猜數字遊戲

https://scratch.mit.edu/projects/89598637/#editor

活動設計-體驗micro:bit 製作的二分搜尋 binary search製作猜數字遊戲

http://glglace.blogspot.tw/2017/10/1160-microbit-7-binary-search.html