假设我们有一个扩展数组,当我们尝试向它添加一些东西但它被填充时,它的大小翻了一番。
根据幻灯片底部“摊销:扩展向量” ,添加一个元素的最坏情况时间是 2N,而不是 N?为什么是这样?
我认为这将是 N,因为将 N 个元素复制到新的双倍大小的数组需要 N 时间。
例如,假设我只向大小为 4 的填充数组添加一个元素。它会像这样:
- 制作大小为 8 的新数组(4 的两倍)。
- 将原始数组的所有元素复制到新数组(复制 4 次)。
- 将新数组的第 5 个元素设置为附加元素(复制 1 次)。
那么这将复制元素 5 次,即 N + 1,而不是 2N?