[英]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.