これはJanomaによるcs.SE に関する質問の再投稿です。彼またはcs.SEへの完全なクレジットと台無し。
標準アルゴリズムコースでは、クイックソートは平均でO(n log n)であり、最悪の場合はO(n²)であると教えられています。同時に、最悪の場合(mergesortやheapsortのような)O(n log n)であり、最高の場合(bubblesortのような)でも線形時間であるが、メモリの追加の必要性がある他のソートアルゴリズムが研究されています。
いくつかの実行時間をひと目見た後、クイックソートは他の効率ほど効率的であってはならないと言うのが自然です。
また、学生は基本的なプログラミングコースで、再帰があまりにも多くのメモリを使用するなどの理由であまり良くないことを学ぶと考えてください。したがって(これは本当の議論ではありませんが)、これはクイックソートがそうではないという考えを与えますそれは再帰アルゴリズムであるため、本当に良いです。
それでは、実際にクイックソートが実際に他のソートアルゴリズムよりも優れているのはなぜですか?実世界のデータの構造に関係していますか?コンピューターでのメモリの動作方法に関係していますか?一部のメモリは他のメモリよりもはるかに高速であることは知っていますが、それがこの直感に反するパフォーマンスの本当の理由であるかどうかはわかりません(理論的な推定と比較した場合)。