歡迎來到搜尋的世界!

你有沒有試過在凌亂的房間裡找鑰匙找了半天?或者是在字典裡查找一個單詞?其實,這兩者你都在進行一項操作,那就是搜尋 (Searching)。在電腦科學中,搜尋演算法 (Searching Algorithm) 就是一套電腦用來在數據列表中尋找特定項目的逐步指令。

別擔心,演算法聽起來好像很複雜,但其實它們就像是電腦的「食譜」一樣簡單!今天,我們將一起看看電腦尋找數據的兩種主要方法:線性搜尋 (Linear Search)二分搜尋 (Binary Search)

1. 線性搜尋:逐一比對法

線性搜尋 (Linear Search) 是尋找數據最簡單的方法。它從列表的最開頭開始,一個接一個地檢查每一項,直到找到目標或者到達列表結尾為止。

運作方式(步驟說明):

1. 從列表中的第一個項目開始。
2. 將該項目與你要找的目標進行比較。
3. 如果它們相同,太好了!你已經找到了,搜尋隨即結束。
4. 如果它們不相同,就移動到列表中的下一個項目
5. 重複步驟 2 到 4,直到找到目標或檢查完所有項目為止。

生活中的類比

想像你在洗過的撲克牌中尋找一張黑桃 A。你拿起第一張牌:「是這張嗎?」不是。你再拿起第二張牌:「是這張嗎?」也不是。你繼續這樣一張一張地檢查下去。這正是線性搜尋的運作方式!

優點與缺點

優點:
- 編寫程式碼非常簡單。
- 適用於任何列表,無論它是已排序的(如 1, 2, 3)還是完全雜亂的(如 5, 1, 9)。

缺點:
- 速度可能非常。如果你有一百萬個項目,而你要找的那一個剛好在最後面,電腦就必須進行一百萬次比較!

重點複習:線性搜尋就像檢查包包裡的每一個口袋,直到找到手機為止。方法簡單,但如果口袋很多,速度就會很慢!

2. 二分搜尋:分治法 (Divide and Conquer)

二分搜尋 (Binary Search) 比線性搜尋快得多,但它有一個非常重要的規則:在開始之前,列表必須已經排序(按字母順序或數字順序排列)。如果列表是雜亂的,二分搜尋就無法運作!

運作方式(步驟說明):

1. 找到已排序列表的中間項目
2. 將中間項目與你要找的目標進行比較。
3. 如果中間項目正好是你想要的,那就完成了!
4. 如果你想要的項目比中間項目,就捨棄列表的右半部分。
5. 如果你想要的項目比中間項目,就捨棄列表的左半部分。
6. 對剩下的那半部分重複上述過程,直到找到目標為止。

生活中的類比

想像「猜數字」遊戲。如果我心裡想著 1 到 100 之間的一個數字,你不會從 1, 2, 3, 4 開始猜(那是線性搜尋!)。相反,你會猜 50。如果我說「大了」,你就立刻知道答案不在 51 到 100 之間。你只用了一次嘗試,就將搜尋範圍減半了!

你知道嗎?

如果你有 1,000 個項目,線性搜尋可能需要最多 1,000 次猜測。而二分搜尋只需 10 次或更少的猜測就能找到答案!

優點與缺點

優點:
- 速度非常,特別是對於龐大的列表(例如搜尋網際網路上的所有網站)。
- 非常有效率,因為每次比較後都能剔除一半的數據。

缺點:
- 列表必須先進行排序。排序本身需要時間和計算資源。
- 相比線性搜尋,編寫對應的程式碼會稍微複雜一些。

核心觀念:二分搜尋就像翻開字典的中間來找單詞。你不會從字母 'A' 開始一個一個讀;你會直接跳過大半本書來尋找目標!

3. 兩種演算法的比較

在考試中,你可能會被要求比較這兩種演算法。以下是幫助你記憶的重點總結:

線性搜尋
- 適用於:未排序或已排序的列表。
- 速度:數據量大時很慢
- 複雜度:非常簡單

二分搜尋
- 適用於:僅適用於已排序列表
- 速度:數據量大時非常快
- 複雜度:較複雜

常見錯誤避坑指南

1. 忽略「已排序」規則:考試中常見的陷阱是給你一個雜亂的數字列表,並問你二分搜尋如何找到某個數字。答案是:它做不到!你必須先對列表進行排序。
2. 搞混中間點:當計算包含偶數項列表(例如 4 個項目)的中間點時,電腦通常使用「整數除法」來選定中間值。對於 AQA GCSE 考試,你只需要理解選取中間點的概念即可。

記憶小技巧:首字母法

Linear(線性)= Line(直線,像排成一條線一樣逐個檢查)。
Binary(二分)= Break(折半,將列表折半處理)。

總結挑戰

別擔心,如果起初覺得有點繞口,只需要記住這兩個問題:
1. 列表是雜亂的嗎?使用線性搜尋
2. 列表已經排序且非常長嗎?使用二分搜尋