#はじめに
こんにちは。前回 C#.NET Frameworkでソートアルゴリズムの可視化をした話をしました。もっと早く描画させたいのと、もっと多くの要素を扱えるようにするためにDXライブラリでソートアルゴリズムの可視化をしようと思います。
なんかもうソートアルゴリズムの勉強の範疇を超え、ソート中毒になってる気がしますがまだまだ飽きないです。
動作例はクイックソートです。
申し訳ないんですがGIFサイズの問題なのかこれ以上動作サンプルを載せることができませんでしたのでご了承ください。
#今回実装したソートアルゴリズム
今回学習目的で実装したアルゴリズムは以下です。各アルゴリズムの詳しい説明はggってください...
・バブルソート
・クイックソート
・マージソート(In-place)
・バイトニックソート
・ヒープソート
#詳細
DXライブラリのDrawBoxとかDrawCircleで描いています。ソートごとに更新フレーム間は違います(やっぱりIN-placeなソートではクイックソートが一番早い)。はじめはDrawBoxの四角形でやってたんですが色付きでもやりたいなと。それなら円でしょ。みたいな。
ちなみにC++のstd::sortはIntroソートってやつを使ってるらしいです。Introソートは、クイックソートとヒープソートを組み合わせたものらしいです(再帰がソートされた要素数の対数を超えるとヒープソートになるらしい)。
##データ
データはこんな感じで構造体で管理しています。初期化時に値と色を設定してArr構造体ごとスワップして画面を更新することで、ソートできる色の円を表現することができます。
typedef struct {
int v; //値
int r; //Red
int g; //Green
int b; //Blue
}Arr;
#さいごに
ソートたのちいいいいいいいいいいいいい