N + 1個の新しいImmutableListが作成されると思います。したがって、その複雑さはO(N)でなければならない。ImmutableListはaddメソッドで複雑さO(logN)を持つのはなぜですか?
答えて
ImmutableListはO(Nログ)複雑さがhereに説明された理由は:
なぜ不変のタイプは可変 タイプはO(1)である(ログn)時間Oしやすいがありますか?コレクションのインスタンス間で共有できる内部データ構造 の結果です。たとえば、 変更可能なHashSetは、単一の配列を割り当て、その配列を という配列に、そのハッシュコードで指定されたインデックスに格納します。このプロバイダー O(1)検索と保管時間。 ImmutableHashSetが同じのデータストレージを使用していた場合は、 アレイ全体を再割り当てしてコピーするだけで、 は、 コレクションが大きく成長したときにパフォーマンスとGCの圧力を迅速に調整します。代わりに、これらの不変コレクションは 不変の平衡二分木を使用してデータを保存します。 は、コレクションの突然変異したインスタンス間で効率的なデータ共有を可能にします。しかしながら、 結果として、すべてのルックアップまたは変更は、(最悪の場合に)O(log n)のアルゴリズム複雑度を有するツリートラバーサル を必要とする。
MSDN documentation for ImmutableArrayは、いくつかの洞察を提供し、ImmutableArrayとImmutableList間の複雑さの違いを示しています
このドキュメントは 'ImmutableList
無効なリンクを削除しました。私はMSDNのドキュメントから別のものを探すつもりです。 –
- 1. なぜO(n * logn)ではなくTreeSet Iteration O(n)ですか?
- 2. 時間複雑度:O(logN)またはO(N)?
- 3. なぜヒープソートの空間の複雑さはO(1)ですか?
- 4. O(LogN)== O(3LogN)ですか?
- 5. n logn最悪の複雑さを持つクイックソートを実行できますか?
- 6. 次のコードは、空間の複雑さO(N)のみを持つのはなぜですか?
- 7. なぜボトムの複雑さはO(n^3)でないのですか
- 8. 線形複雑度O(20n)は多項式複雑度O(n^2/3)を支配できるか? Oの複雑さを持つアルゴリズムの
- 9. なぜ配列挿入の時間複雑さはO(n)で、O(n + 1)ではないのですか?
- 10. O(N)Oまで(LOGN)
- 11. なぜヒープのdeleteMinにO(logn)が必要ですか?
- 12. 複雑さO(log(n))はO(sqrt(n))と等価ですか?
- 13. なぜビーズソートはO(n)の理論上の時間複雑さを持たないのですか?
- 14. O(1)、O(n log n)、O(log n)の複雑さを持つアルゴリズムの例
- 15. Marshal.WriteInt64メソッドのコードが複雑なのはなぜですか?
- 16. 複雑さ(ビッグO)
- 17. 次のコードのBig Oの複雑さは何ですか?
- 18. Q:Python3のrandom.choice(リスト)のBig-Oの複雑さは何ですか?
- 19. 特定のアルゴリズム - 複雑さはO(N)
- 20. ビッグOの点での複雑さ
- 21. mergesortの複雑さO(nlogn)+ O(n)?
- 22. O(logn)^ 2時間のパフォーマンスを持つ例
- 23. O(n)時間の複雑さで合計kを持つすべてのサブアレイを見つけるには?
- 24. なぜwhileループは時間の複雑さ全体にO(n)を寄与しないのですか?
- 25. なぜ再帰的なインオーダートラバーサルの空間複雑さはO(h)ではなく、O(n)でないのですか
- 26. O(n)時間の複雑さを持つN-queenについての説明?
- 27. ハッシュテーブル操作の時間複雑度はO(1)またはO(N)ですか?
- 28. なぜイベントの周期的複雑さは2ですか?
- 29. lognがO(2^sqrt(logn))であることを証明してください。
- 30. MySQLは、ある範囲の値を検索するときにO(logn)の時間複雑さを維持しますか?
まあ、彼らは素朴な実装よりも、それをより効率的にすることにしました。それのどこが悪いんだい? –
より多くのアイテムを含む新しいリスト全体が作成されているというあなたの信念は間違っています。既存の構造の一部を安全に再利用して新しい構造を構築できることを覚えておいてください。その再利用は、多くのシナリオで高効率を実現します。 –
純粋に機能的なデータ構造についてもっと知りたければ、Chris Okasakiの本を見てみることをお勧めします。 – TheInnerLight