マージ(merge)とは、2つのソート済データを併合(マージ)することで1つのソート済データを取得する処理をさします。マージソートでは再帰的な呼び出しにより、十分に小さく分割してからそれを統合(マージ)します。分割統治法と呼ばれる手法です。マージを行う際には、2つのデータの内の片方を外部領域に保持し、小さい(大きい)データからもとの領域に戻すことで、ソート済のデータ作成します。ため安定して高速で動作します。前述の通り2つのデータをマージする際に、外部領域を必要とします。個のデータを保持できる領域が必要になります。マージソートのシミュレーション背景色が黄色のタイミングで比較が実行されています。緑色のデータが現在分割統治中のデータです。以下の図を参考に、シミュレーションの動きを見ると具体的な処理がイメージできます。アルゴリズムの解説データを2つのデータに分割します。分割したデータをさらにマージソートでソートします。分割された左右のデータ領域をマージするには、まず左側のデータを外部領域に退避します。あとは、退避したデータと右側のデータについて、先頭の要素から順に値を比較し、元の領域に戻す作業を繰り返せばよいです。この時、退避した値を並べ終わればマージは終了です。右のデータをもとの位置にありそれが正しい位置だからです。右側のデータが並べ終わったら、退避していた右側のデータをすべて元の領域に戻して完了です。いずれの場合も、おかしな形でデータが上書きされないことを確認しておきましょう。