搜尋關鍵字、數值或特定資料,是許多電腦應用的基礎——無論是查詢銀行餘額、在筆電找檔案,或是 Google 搜尋。
人們期望電腦能瞬間找到答案,我們最討厭看到螢幕上出現正在處理中的「死亡轉圈圈」。
但電腦其實很單純,它一次只能看一筆資料。試想一下,如果電腦每次都要把幾十億個網頁「全部看完」才能找到你要的東西,那你可能要等到天荒地老。
為了避免這種情況,電腦科學家發明了不同的「搜尋演算法 Searching algorithms 」。
今天,我們要把抽象的「運算時間」變成孩子在意的「代幣(零用錢)」。透過一場要花錢的遊戲,讓孩子親身體驗:面對亂七八糟的資料時,運氣多麼昂貴;而面對整理好的資料時,邏輯又是多麼省錢。
第一階段:亂序搜尋(破產的風險)
首先,我們要模擬電腦在處理「未排序資料(Unsorted List)」時的無奈,這種方法稱為「順序搜尋 (Sequential Search)」。
- 任務設定:
- 準備 15 張卡片,一面畫著動物,另一面寫著數字(1-15,但不照順序)。把動物面朝上排成一列。
- 關鍵道具: 給孩子 10 顆彈珠(或糖果/代幣)。
- 規則: 「我要找數字 4。你每翻開一張卡片,就要付給我 1 顆彈珠。如果彈珠用光了還沒找到,你就輸了」。
- 殘酷的體驗:
- 孩子開始翻牌。因為從動物圖案看不出背後的數字(資料是亂的),他們沒有邏輯可言,只能隨機選或從頭翻。
- 情境 A (幸運): 第 1 張就翻到了!孩子很開心:「我只花了 1 顆彈珠!」
- 情境 B (不幸): 翻到第 13 張才找到。
- 生活譬喻: 這就像你借了一本書給朋友,但忘了借給住在這 6 間房子裡的哪一位。因為不知道是誰,你只能一間一間敲門去問。
- 引導思考:
- 「哇,你剛剛差點破產耶!如果資料變多,變成兩倍(30 張),你覺得你要花的時間會變多少?」
- 答案: 平均來說,資料變兩倍,找的時間就會變兩倍。這就是依靠運氣的代價。
第二階段:排序搜尋(邏輯的勝利)
現在,我們要讓孩子體驗「整理資料」的威力,介紹「二分搜尋 (Binary Search)」。
- 改變設定:
- 一樣有15張卡片,這次使用數字在的範圍是1到100之間,但是我們把它們由小到大排好(Sorted)。
- 題目是要找到數字 52。
- 新規則:
- 我們有15個不同的數字,每張卡片上一個。雖然你看不到它們,但這次它們是按從小到大的順序排列的。這些數字的範圍是1到100。
- 「你還是只有 10 顆彈珠。但因為這次有排好順序,當你翻開一張牌,就要付給我 1 顆彈珠,如果不是我要的數字,你可以把所有不可能是答案的牌全部移除!」。
第三階段:省錢大作戰
- 家長引導: 「既然每一顆彈珠都很珍貴,你想翻哪一張,可以幫你刪掉最多張牌?」
- 孩子通常會指中間。
- 家長動作:
- 翻開選中的卡片,露出下面的數字。
- 如果數字正確,遊戲結束
- 猜錯則移除這張卡片以及所有數字不可能是該數字的卡片(即選中卡片右側或左側的所有卡片)
- 引導思考:
- 重複「翻牌 -> 判斷大小 -> 掃掉一半」的過程。這叫做「分治法 (Divide and Conquer)」。
- 「猜了多少次才找到這個數字?」。
- 「怎麼猜可以一次移除最多卡片?」。
第四階段:概念連結 (Concept Connection)
為什麼 Google 這麼快?
- 效率的飛躍:
- 從「順序搜尋」到「二分搜尋」的進步,展示了選擇正確演算法的重要性。
- 這也解釋了一個驚人的事實:用二分搜尋法,搜尋 200 萬筆資料的時間,幾乎跟搜尋 100 萬筆資料一樣快(只多切一次而已)。
- 現實應用:
- 這就是為什麼電腦可以處理海量數據。它透過不斷「切一半」,讓龐大的任務瞬間變得微不足道。
第五階段:除錯與思考 (Debug & Challenge)
什麼時候該用哪一招?
我們要確認孩子理解適用情境,而不只是死背方法。
- 提問: 「既然『切一半』這麼省彈珠,為什麼我們第一關(找動物卡)的時候不用?」
- 引導回答: 「因為第一關的卡片是亂的 (Random Order)!如果沒排好順序,你根本不知道答案在哪一邊,只能亂猜」。
- 總結:
- 資料亂七八糟時: 只能用順序搜尋,雖然可能要找很久。
- 資料排好順序時: 一定要用二分搜尋,利用邏輯來排除錯誤選項。
📝 教學觀察重點表 (Clinical Interview Guide)
| 觀察點 | ❌ 較無效的反應 (只看結果) | ✅ 較有效的引導 (看重過程) |
| 當孩子在第一關(亂序)想用策略時 | 「這裡沒有邏輯,你就隨便猜。」 | 「你覺得選中間那張會比較容易中嗎?因為它是亂排的,選中間跟選旁邊,中獎機率有一樣嗎?」 |
| 當孩子在第二關(排序)猜錯邊時 | 「不對,52 比 40 大,你應該留右邊。」 | 「等等,如果我們把右邊都丟掉了,萬一 52 躲在右邊怎麼辦?我們再確認一次,52 是比 40 大還是小?」 |
| 關於「預測」的討論 | 「你猜 5 次是對的。」 | 「如果這 6 間房子是你朋友家,你覺得你需要敲幾次門才能找到書?為什麼有人覺得 1 次,有人覺得 6 次?」(討論運氣與平均值) |
參考來源:csunplugged earching algorithms
