[Visual C++ 2017] ソートを可視化してみた #1


はじめに

ソート処理をなんとなく使っていたため、視覚的に取り扱ってみたかった。
バブルソートやクイックソートは知っていたが、他のソートアルゴリズムには疎く、自己学習にもなり良い機会だと思った。

ソートアルゴリズムは、参考となるページがWeb上には多くあるため、この投稿では割愛。

Winsowの作成

Windowsデスクトップアプリケーションで新規Windowが作成できる。

描画

hPen MoveToEx() LineTo() により枠組みを描画。
hButtonWnd[] でボタンを設置し、初期化やソート処理の開始などをコントロールさせる。

とても素朴なインターフェースですが、とりあえずはこれで。

可視化

計算の度に画面の更新が必要なため、ソートアルゴリズム中に、InvalidateRect() UpdateWindow()を入れた。

sample.cpp
if (input_num[j - 1] > input_num[j]) {
    temp = input_num[j];
    input_num[j] = input_num[j - 1];
    input_num[j - 1] = temp;
    InvalidateRect(hWd, NULL, TRUE);
    UpdateWindow(hWd);
}

データ個数を100個用意し、乱数を生成。バブルソートを試してみる。

目的を達成できたようです。
他のソートも充実させていきたいと思います。

リンク

以下リンク先では多くのソートを見ることができ、その影響を受けました。

15 Sorting Algorithms in 6 Minutes
https://www.youtube.com/watch?v=kPRA0W1kECg