VBAの配列を挿入ソートで並べ替え

VBAで配列を使うことがあります。

Dim sArray()

このときに配列の並び順を昇順や降順に変えたいことがあります。
それを挿入ソートで行う場合のコードです。
以下のマクロは配列の内容を昇順(小さい順)に並べなおします。

挿入ソートは単純挿入法という言い方もされます。
同じ値の順序がソート前と変わらない安定ソートです。

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

コードは以下になります。


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

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

 

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

関連記事

サブコンテンツ

このページの先頭へ