マージソートは、効率性と予測可能な性能で知られる人気の比較ベースのソートアルゴリズムです。 比較の数を計算する方法を理解することで、実装を最適化し、異なるシナリオでそのパフォーマンスを分析することができます。

メルゲの基本的な概念 ソート

ソートは配列を小数の小数の小数の小数に分割し、各小数をソートし、それらを一緒に結合します。 コア操作は、合併プロセス中に要素を比較することを含みます。これにより、合計の比較数が決定されます。

合併時の比較の計算

合併工程では、2つのソートされたサブアレイから小要素を選択する際に比較が発生します。各要素のペアが比較されると、1つの比較がカウントされます。サブアレイがサイズn1と[n2]の場合、それらを結合するために必要な比較の最大数がn1 + n2 - ]とn2]n2]]n2[FLT]]]である場合、それらが[である場合、それらを結合するのに必要な比較が[[[[]]]

推定合計比較

合併ソートにおける比較の合計数は、すべてのレベルの再帰における各マージ動作を分析することで近似することができます。 サイズの配列のために ]n]]]]]、合計比較は大まかです。

  • n log2 n]]の平均的かつ最悪の場合。
  • 各再帰レベルは、すべてのレベルを合計する合計の比較で、サブレイをマージすることを含みます。
  • 階層ごとの比較数が大きくなるにつれて倍増します。

実用的な計算方法

実質的に比較を計算するには、合併プロセスをシミュレートするか、再帰的な関係を使用する:

[C(n) = C( ) ⁇ n/2( ) + C( ⁇ n/2) + (n - 1)]]

C(n)]は、サイズの配列の合計比較です]n。 この再帰式は、サブアレイとマージ中の比較のためのアカウントを計算します。