我有一个动态数组,我不断地将项目附加到该数组上。追加是复杂性O(1)
。当数组变满时,我想扩大数组并将其复制过来,这就是复杂性O(n)
。
现在,假设我在阵列变满时以不同的速度增长阵列。这些费率是:
i) 一些常数 C
ii) n/2
iii) n^2
在每种情况下,摊销运行时间是多少?
我相信我能够解决案件i
。摊销运行时间将是操作的总成本除以操作的总数。在这种情况下,总成本为C * O(1) + 1 * O(n)
,操作总数为C
。因此,摊销运行时间为O(n)
.
但是,在分析剩下的两个案例时,我有点迷茫。在我看来,操作的总数将分别为n/2 + 1
和n^2 + 1
,但我不太清楚如何计算操作的总成本。
谁能带领我走上正确的道路?