資料結構與演算法

以從開頭逐一比較的線性搜尋,在存有100個不同值的陣列中尋找目標值。若目標值一定在陣列中,且位於各位置的機率相等,則比較次數的平均為多少?

  1. A約7次
  2. B50.5次
  3. C100次
查看答案與解析

正確答案:B. 50.5次

目標值在第 k 個位置時要比較 k 次,因此平均為 (1 + 2 + … + 100) / 100 = 50.5次,一般而言為 (n + 1)/2 次。最佳情況(位於開頭)為1次,最差情況(位於末尾)為100次,平均與最差都與 n 成正比,因此時間複雜度為 O(n)。約7次相當於 log₂ 100 ≈ 6.6,是二分搜尋的次數,但資料未排序時無法使用。

  • A. 這接近二分搜尋的最多次數,不是線性搜尋的平均。
  • B. 正確。(1 + 2 + … + 100)/100 = 50.5次,一般為 (n + 1)/2 次。
  • C. 這是最差情況(目標值在末尾)的次數。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 與陣列相比,鏈結串列(各元素持有指向下一個元素位置之指標的串列)的特徵,下列何者正確?
  2. 對空的堆疊依序進行 push 1、push 2、pop、push 3、push 4、pop、pop 的操作。依序排列以 pop 取出的值,下列何者正確?
  3. 對空的佇列依序放入 A、B、C,取出1個,放入 D 後取出1個,再放入 E 後取出1個。依序排列取出的元素,下列何者正確?
  4. 以逆波蘭表示法(後序式)寫成的算式「3 4 + 2 * 5 −」,用「遇到數字就推入堆疊,遇到運算子就取出2個值計算並推入結果」的方法求值。結果為多少?其中運算子左側的值是先推入的那一個。
  5. 關於雜湊表中碰撞(collision)的說明,下列何者正確?