Quicksortは、その効率性のために知られている広く使用されているソートアルゴリズムです。その性能を理解することは、実行中に予想される比較数とスワップの分析を含みます。この記事では、これらの期待の背後にある数学的原則を探求し、Quicksortの確率的分析に焦点を当てています。

予想される比較件数

Quicksortの比較の予想される数はピボットと分割プロセスの選択に依存します。すべての透過率を同等に仮定すると、再帰式を使用して平均的なケースを分析することができます。サイズ[]n[]]の配列のために、期待される比較は、C(n)としてデノットされ、再発効を満足させます:::

[C(n) = n - 1 + frac{1} {n} sum {k=0}^{n-1} [C(k) + C(n - 1 - k)]

この再発は、よく知られている結果に簡素化します: C(n) ≈ 2n ln ] 大型 []n]] 。 派生物は、すべての可能なピボット位置をまとめ、調和した数のプロパティを適用することを含みます。

期待されるスワップ数

割付けプロセス中にQuicksort のスワップが発生します。 期待されるスワップの数は、比較回数とピボットの選択肢の分布に関連しています。 均一なランダム性の下で、予想されるスワップは、S(n)[]]と表示され、分割手順を分析することによって近似することができます。

各パーティションのステップは、ピボットの正しい配置を確保するために要素を交換することを含みます。 パーティションごとの予想されるスワップは、サブアレイのサイズに比例しています。 すべての再帰呼び出しを上回ると、近似が生じる: []]S(n)≈ n ln ]。

期待のまとめ

  • コンパニオン:]] 大型用約2nnnnnn]]n
  • ]スワプス:]] 大きい のnのnのnのnの
  • メトリックは配列サイズでlogarithmicallyを成長させ、Quicksortの効率性を反映しています。