資料結構與演算法
以二分搜尋在依升冪排序的1,000個不同值中尋找某個值。若1次比較就能得知「相等、較小、較大」,包含找得到與找不到的情況,比較次數最多為幾次?
- A10次
- B32次
- C500次
查看答案與解析
正確答案:A. 10次
每比較1次,搜尋範圍約減為一半,而 2¹⁰ = 1024 ≥ 1000,因此最多10次範圍就會用盡(⌊log₂ 1000⌋ + 1 = 10)。時間複雜度為 O(log n),即使有100萬個也最多只需20次。32次相當於 √1000 ≈ 31.6,500次則接近線性搜尋的平均(約 n/2)。不過,二分搜尋需要資料已排序,也必須考慮排序所需的 O(n log n) 工作量。
- A. 正確。2¹⁰ = 1024 ≥ 1000,因此最多10次即可。
- B. 這相當於 √1000,與二分搜尋的次數無關。
- C. 這接近線性搜尋的平均次數。
繼續練習資料結構與演算法的另外9題