繁体   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