資料結構與演算法

與陣列中央的元素比較、每次將搜尋範圍縮小一半的二分搜尋,其使用的前提條件為下列何者?

  1. A資料的個數是2的冪次
  2. B資料依鍵的順序排序
  3. C資料中不含相同的值
查看答案與解析

正確答案:B. 資料依鍵的順序排序

二分搜尋依與中央元素比較的結果,判斷目標值在前半還是後半,將範圍減半。這是因為資料已排序才能如此判斷,未排序的陣列無法使用。即使資料個數不是2的冪次,只要以 (下端 + 上端) ÷ 2 無條件捨去等方式決定中央位置,就能正常運作。即使含有相同的值也能搜尋,會找到其中某一個(若要找出最前面的位置則需要一點技巧)。

  • A. 只要以無條件捨去等方式決定中央位置,任何個數都能使用。
  • B. 正確。因為已排序,才能由與中央的比較決定要留下前半還是後半。
  • C. 即使有相同的值也能搜尋,會找到其中之一。
練習這個領域 前往領域頁面

相關計算工具

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

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