![](/img/trans.png)
[英]In an ArrayList if an element is removed at index 0 using remove(), then what will be the time complexity?
[英]What is the time complexity of adding an element at the beginning of an ArrayList?
假設我在這個數組中有一個帶有n個元素的ArrayList,我在開頭添加了一個元素:
myArrayList.add(0,'some value');
這次行動的時間復雜程度是多少?
Java Doc沒有指定這一點。
也
我剛開始學習Java,我看到了句子
An ArrayList in Java is a List that is backed by an array.
這里'支持'是什么意思? 謝謝!
將元素添加到數組的開頭是O(n) - 它需要將所有現有元素移位一個位置。
數組列表中的所有元素都存儲在一個連續的數組中。 如果添加的元素多於數組的當前大小 - 它將自動生成以適應新元素。
最后,O(1)在多次插入時攤銷。
ArrayList.add(0, element)
占用線性時間,但常量非常低,因為它可以使用超快速的System.arraycopy
。
ArrayList文檔在這一點上確實模糊不清 - 我剛剛在SE11中對它進行了研究,並且自收集框架的第一個版本(在Java 1.2中)以來它沒有改變。
我相信ArrayList文檔的作者的意圖是指定,在Java的任何實現上,附加操作(即add(E e)
方法)必須以恆定的攤銷時間運行,並且列表插入操作(即add(int index, E e)
方法)必須在O(n)
時間內運行,其中n
是列表的大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.