Design-and-analysis-of-algorithms-merge-sort
提供:Dev Guides
DAA-ソートのマージ
この章では、マージソートについて説明し、その複雑さを分析します。
問題文
数のリストをソートする問題は、すぐに分割統治戦略に役立ちます。リストを2つの半分に分割し、各半分を再帰的にソートしてから、ソートされた2つのサブリストをマージします。
溶液
このアルゴリズムでは、数値は配列 numbers [] _ に格納されます。 ここで、 ' p_' および q はサブ配列の開始インデックスと終了インデックスを表します。
分析
Merge-Sortの実行時間を T(n) として考えてみましょう。 したがって、
$ T(n)= \ begin \ {cases} c&if \:n \ leqslant 1 \\ 2 \:x \:T(\ frac \ {n} \ {2})+ d \:x \:n &それ以外の場合\ end \ {cases} $ここで、_c_および_d_は定数です
したがって、この再帰関係を使用して、
T(n)= 2 ^ i T(\ frac \ {n} \ {2 ^ i})+ i.d.n
As、$ i = log \:n、\:T(n)= 2 ^ \ {log \:n} T(\ frac \ {n} \ {2 ^ \ {log \:n}})+ log \ :ndn $
$ = \:c.n + d.n.log \:n $
したがって、$ T(n)= O(n \:log \:n)$
例
次の例では、Merge-Sortアルゴリズムを段階的に示しています。 最初に、サブ配列に要素が1つだけ含まれるまで、すべての反復配列が2つのサブ配列に分割されます。 これらのサブアレイをさらに分割できない場合、マージ操作が実行されます。