关于调整动态数组大小(作为 ArrayList ADT 的一部分)的问题让我很困惑。
文本设置了将元素添加到数组末尾的场景。当数组达到其容量时,它的大小会增加一倍。新的较大数组使用旧数组的元素进行初始化。该过程的摊销分析给出了 O(n) 的复杂度。
然后提出以下问题:
当容量为 N 的数组已满时,不是将 N 个元素复制到容量为 2N 的数组中,而是将它们复制到具有 N/4 个附加单元的数组中,即容量为 (N + N/4) 的数组。证明对数组执行 n 次加法的序列仍然在 O(n) 中运行。
任何提示,如何解决这个问题的帮助都非常感谢。我不知道如何处理这样一个事实,即满容量的数组的大小增加了其当前大小的一小部分,而不是当前大小的倍数。