我想知道什麼是add(index,E)
方法java ArrayList
的運行時間。根據javadoc添加操作的運行時間分攤到O(1)
。但在add(index,E)的說明中就是這樣說的。在arrayList的某個索引處插入元素的運行時間是多少?
將指定的元素插入此列表中的指定位置。 將當前位於該位置的元素(如果有)和任何後續元素向右移(將其中的一個添加到其索引)。
所以它看起來像O(N)
。我想知道我們需要交易什麼,如果這個操作的運行時間是O(1)
。是否有任何攤銷工作可以完成此操作並犧牲其他操作的運行時間?
我讀過,java ArrayList
是由數組支持的,會改變數據結構的幫助嗎?
[定期添加](http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#add(E))被攤銷O(1),[add at index ](http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html#add%28int,%20E%29)已分期付款O(N) –