何かを追加しようとするとサイズが 2 倍になる拡張配列があるとしますが、それはいっぱいです。
スライド「償却: ベクトルの拡大」の下部によると、1 つの要素を追加するための最悪のケースの時間は、N ではなく 2N ですか? どうしてこれなの?
N個の要素を新しいダブルサイズの配列にコピーするにはN個の時間がかかるため、Nになると思いました。
たとえば、サイズ 4 の塗りつぶされた配列に要素を 1 つだけ追加するとします。次のようになります。
- サイズ 8 (4 の 2 倍) の新しい配列を作成します。
- 元の配列のすべての要素を新しい配列にコピーします (4 回コピー)。
- 新しい配列の 5 番目の要素を追加要素に設定します (1 回コピー)。
では、要素を 5 回コピーすると、2N ではなく N + 1 になりますか?