挿入ソート

VBAで配列の並び順を昇順や降順に変えたいことがあります。

ここでは配列を挿入ソートで並べなおすコードを紹介します。挿入ソートは単純挿入法という言い方もされます。同じ値の順序がソート前と変わらない安定ソートです。

ソート処理の実行時間はO(n^2)と速いとは言えないのですが、ある程度整列している状態であれば高速に処理できます。その性質を利用して、クイックソートとの組み合わせを行うことがあります。

クイックソートは一般的にはソートの中で一番高速ですが、ある程度整列している状態であれば挿入ソートの方が高速なため、クイックソートである程度ソートしたあとに挿入ソートで整列する方法が採られることもあります。

なお、以下の挿入ソートのコードを使って指定フォルダ配下の一覧を取得する方法を「VBAで指定フォルダ配下の一覧をソートして取得」で紹介しています。

他のソートについては以下をご参照ください。
VBAの配列をクイックソートで並べ替え
VBAの配列をバブルソートで並べ替え
VBAの配列を.NETのArrayListのSortで並べ替え
VBAの配列を逆順に並べ替え

挿入ソートのコード

以下の挿入ソートは、引数で渡された配列の内容を昇順(小さい順)に並べなおします。

 

使い方

利用方法はこのような感じになります。

ソート後は、以下の順になります。

是非、活用してください。