資料結構與演算法

對於有 n 個元素的陣列,將所有不同的兩個元素組合各比較一次的處理(以雙重迴圈將第 i 個元素與其後的所有元素比較,並讓 i 逐一前進),其時間複雜度為下列何者?

  1. AO(n)
  2. BO(n log n)
  3. CO(n²)
查看答案與解析

正確答案:C. O(n²)

比較的組數為 (n−1) + (n−2) + … + 1 = n(n−1)/2,n = 10 時為45次,n = 1000 時為499,500次。時間複雜度的階只看 n 變大時的增加方式,因此省略係數1/2與低次項,表示為 O(n²)。n 變為2倍時,次數約變為4倍。O(n) 是每個元素只看一次的處理,O(n log n) 則是像合併排序那樣反覆對半分割的處理的複雜度。

  • A. 若每個元素只看一次是 O(n),但這裡每個元素都要與其餘所有元素比較。
  • B. 這是合併排序等反覆對半分割的演算法的複雜度,比比較所有組合的處理小。
  • C. 正確。比較次數為 n(n−1)/2,與 n² 成正比增加。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 某個時間複雜度為 O(n²) 的程式,在資料數為1,000時處理時間為0.5秒。若資料數變為4,000,處理時間約為幾秒?
  2. 以從開頭逐一比較的線性搜尋,在存有100個不同值的陣列中尋找目標值。若目標值一定在陣列中,且位於各位置的機率相等,則比較次數的平均為多少?
  3. 與陣列相比,鏈結串列(各元素持有指向下一個元素位置之指標的串列)的特徵,下列何者正確?
  4. 對空的堆疊依序進行 push 1、push 2、pop、push 3、push 4、pop、pop 的操作。依序排列以 pop 取出的值,下列何者正確?
  5. 對空的佇列依序放入 A、B、C,取出1個,放入 D 後取出1個,再放入 E 後取出1個。依序排列取出的元素,下列何者正確?