设 x 为空数组的大小。如果数组变满,将创建一个长度为 k > x 的新数组。旧数组的内容将被复制到新数组中,新元素也将被存储。
- 在 k 步中创建一个长度为 k 的数组
- 复制一个元素需要固定的时间。
问题:如何选择 k 使得每个插入操作都有摊销的常数时间,并且插入 n 个元素需要 Θ(n)?通过摊销分析证明您的选择会导致每次插入操作的摊销时间恒定。
我的直觉说 k = 2*n 是个好主意,但我不知道如何证明它。我认为我根本不了解摊销分析。有什么建议么?
设 x 为空数组的大小。如果数组变满,将创建一个长度为 k > x 的新数组。旧数组的内容将被复制到新数组中,新元素也将被存储。
问题:如何选择 k 使得每个插入操作都有摊销的常数时间,并且插入 n 个元素需要 Θ(n)?通过摊销分析证明您的选择会导致每次插入操作的摊销时间恒定。
我的直觉说 k = 2*n 是个好主意,但我不知道如何证明它。我认为我根本不了解摊销分析。有什么建议么?