for (int i =0; i < n; i++){
lst.add(lst.size()/2,3*i);
}
for ループは o(n) を取ると思っていましたが、ArrayList と LinkedList を使用した場合の add(j,t) の違いは何なのかはっきりしませんでした..ありがとう!
for (int i =0; i < n; i++){
lst.add(lst.size()/2,3*i);
}
for ループは o(n) を取ると思っていましたが、ArrayList と LinkedList を使用した場合の add(j,t) の違いは何なのかはっきりしませんでした..ありがとう!
an のいくつかのスロット k に挿入する場合ArrayList
、k は O(1) ですが、k の後に各要素をプッシュバックする必要があります。これは O(n) です。ただし、ArrayList
配列のサイズを変更する必要がある状況を考慮に入れる必要があるため、 an の最後に挿入すると償却されます。
a のLinkedList
場合、位置 k の要素への参照がない限り、リストを反復処理してその位置を見つける必要があります。これは O(n) ですが、実際の挿入は常に O(1) です。
の場合LinkedList<E>
:
add(int インデックス, E 要素) は O(n)
の場合ArrayList<E>
:
add(int index, E element) は O(n - index) 償却されますが、O(n) 最悪の場合 (上記のように)
ソース: