EeBlog(テクニカルブログ) :アルゴリズム

ソートアルゴリズム(7)

今回はマージソートです。

マージソートの処理は

1.ソートするリストを2つに分ける
2.分けたリストをソートする
3.2つのリストをマージする

の3つの処理を再帰的に行うことでソートします。

1. のソートするリストの要素が0か1の場合にはソートする必要が無いのでリストをそのまま返します。これにより処理2で無限再帰しないことが保障されます。

2. の分けたリストをソートする部分でマージソートを再帰呼び出しします。

3. のマージでは2つのリストのそれぞれの先頭の値を比較し小さい(または大きい)方の値を取り出して結果のリストに追加します。

(さらに…)

ソートアルゴリズム(6)

今回はヒープソートを紹介します。
ヒープソートとはその名のとおり、ヒープ構造を用いてソートを行うアルゴリズムです。
ヒープ構造とは2分木構造の一種で、ルートが常にそのヒープ構造の中の最大値(あるいは最小値)を指すように調整を行うデータ構造です。
このヒープ構造にソートを行いたいデータを追加していき、次にルートからデータを取り出して順番に並べていきます。

(さらに…)

ソートアルゴリズム(5)

今回はちょっと変わり種のソートアルゴリズムであるボゴソートを紹介します。

このソートはリストが整列された状態になるまでひたすら無作為に並び替えて、偶然に整列された状態のリストが
できるまで繰り返す、という非常にシンプルなソートです。
ちょっと考えてみれば分かる通り、このソートは非常に性能が悪くてとても実用にはなりません。
以下はJavaコードによる実装例です。
(さらに…)