私は 2 通りのマージ ソート アルゴリズムを調べていて、マージ パスを減らすことで時間の点でより良い利益を得ることができるかどうかを考えていました。
たとえば、双方向のマージでは、次の繰り返しがあります。
T(n) = 2T(n/2) + O(n)
これは N.log-base2(N) の時間複雑度を持っています
問題を 4 で割り、4 つのサブ配列をマージすると、次のようになります。
T(n) = 4T(n/4) + O(n)
これは N.log-base4(N) の時間計算量を持つ必要があります
マージ パスの数が減ったため、マージ ソートを実装するときにこれを考慮する必要がありますか?
たとえば、64 要素の配列の場合、最初のアプローチでは 6 つのパスがあり、2 番目のアプローチでは 3 つのパスがあります。
編集:
さて、2T(n/2) ではパスごとに N 回の比較を行い、4T(n/4) ではパスごとに 3*N 回の比較を行うことになりますか? 要素を結果配列に移動するコストについてはどうですか?それは各パスで同じままですか?