調查局三等申論題
107年
[電子科學組] 計算機概論
第 一 題
📖 題組:
下圖是二元搜尋法(binary search)的一個示意圖。此例乃在一已排序的陣列 A[0:11]中,找尋一個值為 Target=22 的元素的位置。一開始先令 first←0,last←11。
下圖是二元搜尋法(binary search)的一個示意圖。此例乃在一已排序的陣列 A[0:11]中,找尋一個值為 Target=22 的元素的位置。一開始先令 first←0,last←11。
📝 此題為申論題,共 5 小題
小題 (一)
此例第一回合 mid 設定值為 5,請問求出 5 這個位置的公式為何(請列出用 first 及 last 來計算的公式)?(5 分)
思路引導 VIP
本題考查二元搜尋法(Binary Search)的核心操作。考生需回憶二元搜尋如何計算中間索引值,寫出包含 first 與 last 的取整數公式,並代入題目給定的數值進行驗證推導,即可輕鬆拿分。
小題 (二)
此例剛好用了三個回合就找到了 Target=22,其位置在 A[6]。請列出其他也剛好會用了三個回合就找到了的所有 Target 值。(5 分)
思路引導 VIP
本題測驗二元搜尋法的實際運作過程。解題關鍵是畫出二元搜尋的『決策樹』,依序推導出第一回合(根節點)、第二回合(第二層)、第三回合(第三層)所探訪的陣列索引值(利用公式 mid = ⌊(first + last) / 2⌋),並從陣列中映射出對應的元素數值。
小題 (三)
請列出剛好會用了兩個回合就找到了的所有 Target 值。(5 分)
思路引導 VIP
本題測驗二元搜尋法的尋找過程與邊界計算。看到題目需立即聯想二元搜尋法的『中位數索引公式:mid = ⌊(first + last) / 2⌋』。要求「剛好兩個回合」找到,代表目標值位於決策樹的第二層節點,只要分別推算出第一回合比對失敗後,向左分支與向右分支搜尋時所產生的第二回合 mid 索引對應值即可。
小題 (四)
請問此二元搜尋法一個回合一個回合執行下去,碰到什麼條件才結束?(5 分)
思路引導 VIP
本題測驗二元搜尋法(Binary Search)的演算法終止條件。作答時需全面考量,不僅要指出『找到目標值』的成功條件(結合圖例),還必須寫出『搜尋範圍交叉(first > last)』的失敗條件,以展現對演算法完整邏輯的掌握。
小題 (五)
此例如果陣列 A[0:11] 中 12 個元素每個元素被尋找的機率都一樣,請問每個元素平均會用了幾個回合就找到了?(5 分)
思路引導 VIP
看到計算二元搜尋的「平均搜尋次數」,應直覺聯想到將搜尋過程轉化為「二元決策樹(Binary Decision Tree)」。計算出樹的每一層有多少個節點(即搜尋所需回合數),將所有節點的搜尋次數加總後,除以總元素個數,即可得出平均值。