資料結構與演算法

某個可變長度陣列在容量已滿時加入元素,會重新配置2倍容量的區域並複製所有元素。對容量為1的空陣列逐一加入1,000個元素時,被複製的元素總數為多少?

  1. A10
  2. B1,023
  3. C499,500
查看答案與解析

正確答案:B. 1,023

容量每次滿了就以1、2、4、…、512的方式變為2倍,每次都要複製當時的所有元素,因此複製總數為 1 + 2 + 4 + … + 512 = 1,023。對1,000次加入而言,複製約為元素數的1倍,因此每次加入的工作量平均為固定值,也就是攤銷 O(1)。若容量每次只增加1,複製為 1 + 2 + … + 999 = 499,500,是 O(n²)。10是重新配置區域的次數,不是被複製的元素數。

  • A. 這是重新配置區域的次數(1→2→…→1024共10次),不是被複製的元素數。
  • B. 正確。1 + 2 + 4 + … + 512 = 1,023,每次加入平均約複製1次。
  • C. 這是容量每次只增加1時的複製總數。
練習這個領域 前往領域頁面

相關計算工具

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

  1. 在元素很多、負載因子維持在0.5左右的雜湊表中,使用線性探測的開放定址法往往比鏈結法(以鏈結串列串接的方法)快,最適當的原因為下列何者?
  2. 在 GPU 這類平行處理裝置上排序時,有時會使用雙調排序(bitonic sort)這類比較與交換步驟固定的排序(排序網路),其理由為下列何者?
  3. 對於有 n 個元素的陣列,將所有不同的兩個元素組合各比較一次的處理(以雙重迴圈將第 i 個元素與其後的所有元素比較,並讓 i 逐一前進),其時間複雜度為下列何者?
  4. 某個時間複雜度為 O(n²) 的程式,在資料數為1,000時處理時間為0.5秒。若資料數變為4,000,處理時間約為幾秒?
  5. 以從開頭逐一比較的線性搜尋,在存有100個不同值的陣列中尋找目標值。若目標值一定在陣列中,且位於各位置的機率相等,則比較次數的平均為多少?