資料結構與演算法

以二分搜尋在依升冪排列的陣列 a[0]~a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60 中尋找38。搜尋範圍從下端 lo = 0、上端 hi = 9 開始,中央位置為 (lo + hi) ÷ 2 無條件捨去。依序排列與38比較的元素值,下列何者正確?

  1. A23, 38
  2. B31, 52, 45, 38
  3. C23, 45, 31, 38
查看答案與解析

正確答案:C. 23, 45, 31, 38

首先 (0 + 9) ÷ 2 = 4,與 a[4] = 23 比較,38較大,因此 lo = 5。接著 (5 + 9) ÷ 2 = 7,與 a[7] = 45 比較,38較小,因此 hi = 6。再來 (5 + 6) ÷ 2 = 5,與 a[5] = 31 比較後 lo = 6,最後在 a[6] = 38 相符。比較共4次,相當於元素數10時的最多次數 ⌊log₂ 10⌋ + 1 = 4。31、52、45、38 是中央位置採無條件進位時的順序,與題目的規則不同。

  • A. 與23比較後,接著要與剩餘範圍 a[5]~a[9] 的中央 a[7] = 45 比較。
  • B. 這是中央位置採無條件進位時的順序,與題目的規則不同。
  • C. 正確。依序與 a[4]、a[7]、a[5]、a[6] 比較,第4次找到。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 以泡沫排序將陣列 5, 3, 8, 1, 4 依升冪排列。從開頭比較相鄰的兩個元素,若左側較大就交換,這樣的操作進行到末尾1次(1輪)後,陣列為下列何者?
  2. 以選擇排序(從未排序部分找出最小值,並與未排序部分的開頭交換)將陣列 29, 10, 14, 37, 13 依升冪排列。進行此操作2次後,陣列為下列何者?
  3. 以插入排序將有10個元素的陣列依升冪排列。依序取出第2個以後的元素,從左側相鄰的元素開始依序比較,直到找到小於或等於取出值的元素,或到達開頭為止。一開始就是升冪時與一開始是降冪時,比較次數的組合為下列何者?
  4. 即使在最差情況下時間複雜度也是 O(n log n),且幾乎不使用工作用陣列等額外記憶體就能排序的演算法為下列何者?
  5. (姓名, 分數)的資料 (A, 80)、(B, 70)、(C, 80)、(D, 70) 依此順序排列。以穩定排序依分數升冪重新排列時,姓名的順序為下列何者?