資料結構與演算法

某個時間複雜度為 O(n²) 的程式,在資料數為1,000時處理時間為0.5秒。若資料數變為4,000,處理時間約為幾秒?

  1. A2秒
  2. B8秒
  3. C32秒
查看答案與解析

正確答案:B. 8秒

O(n²) 的處理時間與資料數的平方成正比,因此資料數變為4倍時,處理時間變為 4² = 16倍,0.5秒 × 16 = 8秒。2秒是與資料數成正比的 O(n) 的情況,32秒則是與立方成正比的 O(n³) 的情況(4³ = 64倍)。實際上,也可能因資料放不進快取等影響而變得更慢。

  • A. 若是與資料數成正比的 O(n),會是4倍的2秒,但 O(n²) 是以平方增加。
  • B. 正確。資料變為4倍時為 4² = 16倍,0.5 × 16 = 8秒。
  • C. 這是以 4³ = 64倍計算的 O(n³) 的值。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 以從開頭逐一比較的線性搜尋,在存有100個不同值的陣列中尋找目標值。若目標值一定在陣列中,且位於各位置的機率相等,則比較次數的平均為多少?
  2. 與陣列相比,鏈結串列(各元素持有指向下一個元素位置之指標的串列)的特徵,下列何者正確?
  3. 對空的堆疊依序進行 push 1、push 2、pop、push 3、push 4、pop、pop 的操作。依序排列以 pop 取出的值,下列何者正確?
  4. 對空的佇列依序放入 A、B、C,取出1個,放入 D 後取出1個,再放入 E 後取出1個。依序排列取出的元素,下列何者正確?
  5. 以逆波蘭表示法(後序式)寫成的算式「3 4 + 2 * 5 −」,用「遇到數字就推入堆疊,遇到運算子就取出2個值計算並推入結果」的方法求值。結果為多少?其中運算子左側的值是先推入的那一個。