Table of Contents
マージソートは、効率性と予測可能な性能で知られる人気の比較ベースのソートアルゴリズムです。 比較の数を計算する方法を理解することで、実装を最適化し、異なるシナリオでそのパフォーマンスを分析することができます。
メルゲの基本的な概念 ソート
ソートは配列を小数の小数の小数の小数に分割し、各小数をソートし、それらを一緒に結合します。 コア操作は、合併プロセス中に要素を比較することを含みます。これにより、合計の比較数が決定されます。
合併時の比較の計算
合併工程では、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。 この再帰式は、サブアレイとマージ中の比較のためのアカウントを計算します。