[英]What is the running of following code if implement by ArrayList and LinkedList?
for (int i =0; i < n; i++){
lst.add(lst.size()/2,3*i);
}
我認為for循環將采用o(n)但我不清楚add(j,t)如果使用ArrayList和LinkedList之間有什么區別..謝謝!
為了插入ArrayList
的某個插槽k,找到k是O(1),但是你必須在k之后推回每個元素,即O(n)。 但是,在ArrayList
的末尾插入是分攤O(1),因為我們需要考慮數組需要調整大小的情況,因此需要攤銷。
對於LinkedList
,除非您對位置k處的元素有引用,否則您需要遍歷列表以查找所述位置,即O(n),而實際插入始終為O(1)。
對於LinkedList<E>
:
add(int index,E element)是O(n)
對於ArrayList<E>
:
add(int index,E element)是O(n - index)攤銷,但O(n)最壞情況(如上)
資源:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.