C + + STLアルゴリズムに関するNicolai Josuttisの本を読んでいます。 stable_sort()のような多くのアルゴリズムでは、十分なメモリが利用可能であれば、アルゴリズムn * log(n)の複雑さを言います。そうでなければn * log(n)* log(n)です。私の質問は、どのようにメモリの使用量が複雑さに影響を与えますか? STLはこのような状況をどのように検出しますか?アルゴリズムの複雑さにおけるメモリ使用の影響
4
A
答えて
12
gccのSTLを見るとinplace_merge
はstl_algo.h
にあります。これは、入力と同じサイズのバッファを使用して、O(N)を使用したマージソートの従来のマージ実装です。このバッファは_Temporary_buffer
、stl_tempbuf.h
から割り当てられます。これによりget_temporary_buffer
が呼び出され、最終的に新しいものが呼び出されます。例外がスローされると、例外が捕捉され、バッファはNULLになります。これは「十分でないメモリ」の場合です。その場合、マージは__merge_without_buffer
で動作します。これはO(N lg N)です。再帰深度マージソートはO(lg N)であるため、バッファなしのバージョンでは "従来の" mergesort(バッファ付き)の場合はO(N lg N)、バージョンがない場合はO 。
関連する問題
- 1. パラメータが時間の複雑さに影響する[Python]
- 2. は、マージソートの複雑さに影響を与えます
- 3. アルゴリズムの複雑さ
- 4. 認知の複雑さとそのコードへの影響
- 5. インデックスビルドの複雑さに対するドキュメント数のパフォーマンスへの影響は?
- 6. Dijkstraのアルゴリズム - 複雑さ
- 7. min-maxアルゴリズムの複雑さ
- 8. fooアルゴリズムの複雑さ
- 9. Edmonds-Karpアルゴリズムの複雑さ
- 10. NSGA iiアルゴリズムの複雑さ
- 11. アルゴリズムの複雑さ - エクササイズ
- 12. CNN AlexNetアルゴリズムの複雑さ
- 13. アンドロイドでRunnableを複数回使用し、メモリに与える影響
- 14. .NET 4.0におけるCASポリシーの変更の影響?
- 15. データマイニングにおけるデータセットのスパース性の影響
- 16. オペコードキャッシュがメモリ使用量に与える影響
- 17. サブタスクの既知の複雑さを伴うアルゴリズムの複雑さ
- 18. StreamReaderの影響を受けるメモリの量
- 19. オブジェクトのプロパティ名の長さがメモリ使用量に影響しますか?
- 20. アルゴリズムのBig O/Timeの複雑さを見つける方法
- 21. 高速フーリエ変換におけるデータ間隔の影響
- 22. 再帰アルゴリズムの複雑さを見つける
- 23. アルゴリズムの複雑さを判断する
- 24. x86/x86_64複数ソケット上のメモリ注文命令の影響
- 25. この関数のアルゴリズムの複雑さ
- 26. メモリ使用量とJavaScriptオブジェクトの複雑さの順
- 27. リンクリストのアルゴリズム複雑さの分析
- 28. アルゴリズムの最悪の複雑さ
- 29. f(n)コストでのアルゴリズムの複雑さ
- 30. 次のアルゴリズムの複雑さは?
+1。この標準は、十分なメモリと不十分なメモリの両方の場合の複雑さを25.3.4/7に保証しているため、すべての実装では何らかのメモリが十分にあるかどうかを判断する必要があります。彼らは 'new 'によって投げられた例外をキャッチすることによってそうするように拘束されていませんが、それはそれを実行する賢明な方法のようです。 :) –