私が知っているように、クイックソートのパフォーマンスは平均でO(n * log(n))ですが、マージとヒープソートのパフォーマンスは平均でもO(n * log(n))です。ですから、クイックソートが平均的に速いのはなぜでしょうか。クイックソートが他のクイックソートよりも平均的に速いのはなぜですか?
答えて
クイックソートの最悪ケースは、実際にはヒープソートとマージソートよりも悪いです。でもクイックソートは平均で速いです。同じ漸近のアルゴリズムに直面したとき
:なぜ、それを説明するには時間がかかりますので、私はSkiena, The algorithm design manual.
にマージ/ヒープソート対クイックソートをまとめた見積もりを参照するによう
複雑さ、実装 キャッシュのパフォーマンスやメモリサイズなどの詳細とシステムの傾向は、確かに決定的な要因であることが判明しているかもしれません。 実験では、適切に実装された クイックソートがうまく実装されている場合、通常、mergesortまたは ヒープソートより2〜3倍高速であることが実験からわかります。主な理由は、最も内側のループの操作が であることです。しかし、私がquicksortが であると言うとき、あなたが私を信じていなければ、私はあなたと議論することはできません。それは私たちが使用している分析ツールの外にある問題です。 伝える最も良い方法は、アルゴリズムと実験の両方を実装することです。
その内部ループが 効率的に最も アーキテクチャ上で、最も現実世界で実現することができるので、典型的には、クイックソートは、他のO(nlogn) アルゴリズムよりも、実際にはかなり 高速であります データでは、二次的な時間を必要とする確率 を最小限に抑えるように設計することが可能です( )。 さらに、クイックソートは、 の仮想メモリと利用可能なキャッシュ の完全な利点を利用して、メモリの優れた使用方法を、 にする傾向があります。 quicksortは内部ではありません 補助メモリを並べ替えて使用しますが、 は最新のコンピュータ アーキテクチャに非常に適しています。
同じページにcomparison with other sorting algorithmsも見てください。
CSサイトのWhy is quicksort better than other sorting algorithms in practice?も参照してください。
仮想メモリとキャッシュをいかに正確に活用しているか知っていますか?どんな例ですか? – Michael
アルゴリズム自体について考えるのであれば、仮想メモリとキャッシュについて心配しないでください。アルゴリズムはハードウェアに依存しません。 – DarthVader
このアルゴリズムは、「参照の局所性」を良好にするために順番に横断する(http://en.wikipedia。org/wiki/Locality_of_reference)あなたのキャッシュがうまく動作するようにして(つまり作業をスピードアップします) – ChristopheD
- 1. クイックソートの平均的な時間複雑度はどのくらいですか?
- 2. クイックソート - なぜランダムピボットですか?
- 3. Gnomeソートはクイックソートより高速ですか?
- 4. クイックソート/挿入クイックソートだけのコンボスピードより遅い?
- 5. は、k番目の最小の数 - クイックソートより速いquickselect
- 6. クイックソートが遅いのはなぜですか?
- 7. リンクリストのクイックソートの実装が配列1よりもずっと遅いのはなぜですか?
- 8. クイックソートの実装にMergesortよりも時間がかかるようです
- 9. Javaクイックソートなぜ/どこに値が変わるのですか?
- 10. Pythonのクイックソートは再帰的な深さ
- 11. クイックソートに失敗したこのテストはなぜですか?
- 12. クイックソートが動作しない
- 13. このクイックソート機能が機能しないのはなぜですか?
- 14. rareのホアレパーティションによるクイックソート
- 15. テール再帰のないクイックソート
- 16. キャッシュの不自由なクイックソートはどのようにですか?
- 17. クイックソートの出力が一貫しない
- 18. プログラムのクイックソートが機能しない
- 19. クイックソートのサブクラスQList
- 20. C++のクイックソート
- 21. クイックソートの実装
- 22. MLのクイックソート
- 23. Idrisのクイックソート
- 24. 昇順のクイックソート
- 25. クイックソートの再帰
- 26. GLSLのクイックソート?
- 27. クイックソートの実装
- 28. クイックソートの反復
- 29. Intro Sort(クイックソート+ヒープソート)は永続的ではありませんか?
- 30. 一般的なクイックソートの何が問題になっていますか?
ヒープソースは最悪の場合、おそらくあらゆる場合にO(n * log(n))です。 – phkahler