【发布时间】:2013-06-20 05:18:46
【问题描述】:
我想知道 java ArrayList 的 add(index,E) 方法的运行时间是多少。根据javadoc,添加操作的运行时间摊销O(1)。但在add(index,E) 的描述中是这样说的。
在此列表中的指定位置插入指定元素。 移动当前在该位置的元素(如果有)和任何 右侧的后续元素(将其索引加一)。
所以它看起来像O(N)。我想知道如果这个操作的运行时间是使O(1) ,我们必须换取什么。是否可以进行任何摊销工作来进行此操作O(1) 并为其他一些操作牺牲运行时间?
我读到 java ArrayList 是由数组支持的,更改数据结构会有帮助吗?
【问题讨论】:
-
regular add 摊销 O(1),add at index 摊销 O(N)
标签: java data-structures arraylist complexity-theory big-o