資料結構與演算法

以二分搜尋在依升冪排序的1,000個不同值中尋找某個值。若1次比較就能得知「相等、較小、較大」,包含找得到與找不到的情況,比較次數最多為幾次?

  1. A10次
  2. B32次
  3. 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. 這接近線性搜尋的平均次數。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 以二分搜尋在依升冪排列的陣列 a[0]~a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60 中尋找38。搜尋範圍從下端 lo = 0、上端 hi = 9 開始,中央位置為 (lo + hi) ÷ 2 無條件捨去。依序排列與38比較的元素值,下列何者正確?
  2. 以泡沫排序將陣列 5, 3, 8, 1, 4 依升冪排列。從開頭比較相鄰的兩個元素,若左側較大就交換,這樣的操作進行到末尾1次(1輪)後,陣列為下列何者?
  3. 以選擇排序(從未排序部分找出最小值,並與未排序部分的開頭交換)將陣列 29, 10, 14, 37, 13 依升冪排列。進行此操作2次後,陣列為下列何者?
  4. 以插入排序將有10個元素的陣列依升冪排列。依序取出第2個以後的元素,從左側相鄰的元素開始依序比較,直到找到小於或等於取出值的元素,或到達開頭為止。一開始就是升冪時與一開始是降冪時,比較次數的組合為下列何者?
  5. 即使在最差情況下時間複雜度也是 O(n log n),且幾乎不使用工作用陣列等額外記憶體就能排序的演算法為下列何者?