動的配列に関するウィキペディアの記事によると、配列の最後での挿入/削除はO(1)であり、中央からの挿入/削除はO(n)です。なぜそれが正確なのですか?
また、5つの要素を持つ動的配列があり、位置6に新しい要素を挿入した場合、操作はO(n)ですが、関数を使用して配列の最後に追加すると、O(1)になります。どちらの場合も配列のサイズを変更する必要がないと仮定すると、これは同じ操作ではありませんか?または、動的配列に追加すると、位置6以外の場所に新しい要素が実際に挿入されますか?
ありがとう!
編集:私の主な混乱は、配列の最後に挿入することと、配列の最後に相当する特定の位置に挿入することの違いだと思います。
配列の最後のメモリアドレスへのポインタが手元にあると思います。そのため、追加操作が高速です。逆に、正確な位置を指定すると(配列の最後であっても)、その位置に挿入することは前述のメモリアドレスを使用することと同じであることがわからないため、配列全体をトラバースする必要があります。