マージソートの原理 マージソートはO(nlogn)の速いアルゴリズムです。 しかし、定数係数が大きく、同じ O(nlogn)のクイックソートには太刀打ちできません。 しかし、マージソートは、これまでに紹介したアルゴリズムとは違って、要素をシーケンシャルアクセスして整列するという特徴があります。 そのため、主に連結リスト、外部記憶上のデータを整列するのに用いられます。 まず最初に、マージソートの基礎となる、マージ(merge)という操作について説明します。 整列済みの2つのデータ列を、1つの整列されたデータ列にまとめあげる操作を、マージ(日本語で言えば併合)といいます。 マージの対象となるデータ列は、3つ以上でもかまわないのですが、話を簡単にするためにここでは2つに限っておきます。 マージを行う手順は極めて簡単です。 2つの整列済みの列aとbをマージして、列cを得ることを考えます。 まず、列