某電商平台工程師需在已排序的價格清單中,快速定位指定價格是否存在,給定排序後陣列:arr = [3, 8, 14, 19, 21, 27, 33, 45, 52]。若搜尋目標值為 27,且採用標準二分搜尋(Binary Search)流程(每次比較後排除中位數),請問最多需要比較幾次即可找到目標?
答案 (B)
核心概念
二分搜尋每次取當前範圍的中間元素與目標比較,相等就找到,目標較大就往右半邊找,較小就往左半邊找,每次比較都把搜尋範圍砍半。
答題技巧
快速判斷技巧:這種題目直接動筆推演最快,不要用公式硬猜。在草稿紙上寫下索引範圍,每次算中點、比大小、縮範圍,三行就結束。取中點記得用整數除法(無條件捨去)。
易錯陷阱:兩個常見失誤——一是忘記把「找到的那一次」也算進比較次數(會少算 1 次),二是中點算法用四捨五入而非捨去,導致推演路徑跑掉。建議先把索引 0~8 標在陣列上方再開始。