簡體   English   中英

如果由ArrayList和LinkedList實現,下面代碼的運行是什么?

[英]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)最壞情況(如上)

資源:

https://stackoverflow.com/a/322742/2498729

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM