for (int i =0; i < n; i++){
lst.add(lst.size()/2,3*i);
}
我在想for for循环将采用o(n)但是我不清楚add(j,t)如果使用ArrayList和LinkedList之间的区别是什么。 谢谢!
答案 0 :(得分:3)
为了插入ArrayList
的某个时隙k,找到k是O(1),但是你必须在k之后推回每个元素,即O(n)。但是,在ArrayList
的末尾插入的是摊销的O(1),因为我们需要考虑需要调整数组大小的情况,所以要摊销。
对于LinkedList
,除非您对位置k处的元素有引用,否则您需要遍历列表以查找所述位置,即O(n),而实际插入始终为O( 1)。
答案 1 :(得分:1)
LinkedList<E>
:
add(int index,E element)是O(n)
ArrayList<E>
:
add(int index,E element)是O(n - index)摊销,但O(n) 最坏情况(如上所述)
来源: