まず、アルゴリズムのアイデア:
分割統治:ベクトルLIST
2へのシーケンス // O(1)
ソート再帰配列 // 2×T(N / 2 )
合わせた順序付きシーケンス // O(N)
第二に、例えば次のように:
T(N)= 2 * T(N / 2)+ O(N)T(N)= O(nlog(n))を交換法を用いて解くことができ、O(n)がソートされた2つのサブシーケンスをマージ時間。
次のような原理をマージマージ:
以下を達成するためにマージマージ:
オープン要素Bの_elemを格納するためのスペース[LO、MI)であり、ハイテク、[マイルを_elem)の要素は、それだけでこのメモリCを指すポインタを定義する必要があり、新しいキャッシュのためのスペースを開放する必要はありません。
再び改善マージ:
Cが消耗を待つ必要がなく、一度に空乏化Bを終了する。完全空乏ときCはAとBの半分であるため、[I ++] = C [++ K]を実行する必要はありません。したがって、2つのループ本体の順序を変更すること、冗長なロジックを削除。
複雑マージ: 最悪の場合には、全体としてJ + Kを、唯一のO(n)は線形時間です。