ソートアルゴリズムの可視化

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kopi
記事: 19
登録日時: 10年前

ソートアルゴリズムの可視化

#1

投稿記事 by kopi » 10年前

こんばんは。
今日、下のような動画を発見しました。
[nico]http://www.nicovideo.jp/watch/sm20076984[/nico]

このようなソートアルゴリズムを可視化するプログラムを書いてみたい、と思ったのですが、
どのような環境が必要でしょうか?開発言語としてはC言語がいいです。

今現在、C言語プログラムを書くときの環境は
OS : windows 7 64bit
コンパイラ : bcc5.5.1
となっています。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: ソートアルゴリズムの可視化

#2

投稿記事 by みけCAT » 10年前

C言語でWin32 APIを使えば表示はできると思います。
動画にするなら、C言語+libpngで画像を書き出し、ffmpegでつなげて動画にするという方法があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

kopi
記事: 19
登録日時: 10年前

Re: ソートアルゴリズムの可視化

#3

投稿記事 by kopi » 10年前

みけCAT さんが書きました:C言語でWin32 APIを使えば表示はできると思います。
動画にするなら、C言語+libpngで画像を書き出し、ffmpegでつなげて動画にするという方法があります。
みけCATさん、情報ありがとうございます。

一応、ネットで調べてみたんですが
http://www.kumei.ne.jp/c_lang/sdk/sdk_23.htm
http://okwave.jp/qa/q7796780.html
このくらいしか出て来ず。

もっとこういうのから勉強すればいいよって分かるサイトなど教えていただけないでしょうか。

簡単なバブルソートからでも実現しようと思ったんですが、画面に描画してアニメーションにする方法が教えていただいた方法では未熟な私ではかなり曖昧にしか分からないので、方向性を教えていただきたいです。

かなたん
記事: 50
登録日時: 11年前
連絡を取る:

Re: ソートアルゴリズムの可視化

#4

投稿記事 by かなたん » 10年前

私はWin32 APIをまともに触った経験がありませんが、MFC(C++)というのを使ってバブルソートやクイックソートなどを可視化した経験があったので、その動きについて少し書いてみます。

可視化する=動きを画面に出す
ということで、まずは数字の流れを把握する必要があります。
また、ソートの過程を見せるためには、たとえばソートと描画を交互に行う必要があります。
ただ交互に行うだけでは処理が速すぎて人の目には何をやっているのかが分からないので、少なくとも描画の間隔は人がきちんと見れるくらい開けておかなくてはなりません。
そのためにはタイマー処理をする必要があります。
つまり、ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→という感じで繰り返してやれば、ソートアルゴリズムを可視化させることができます。
わからないことも、ブログに書いているうちにひらめくこともある。
本当に行き詰ったら、考え直すのも1つの手かな。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: ソートアルゴリズムの可視化

#5

投稿記事 by softya(ソフト屋) » 10年前

リンクで貼られた最初の猫WinはWin32APIの勉強サイトなので、そこで勉強できます。サイトとの相性は有るでしょうけど。
「Windows SDK編INDEX」
http://www.kumei.ne.jp/c_lang/index_sdk.html
ただ、Win32APIは覚えることが多く大変なのでDXライブラリでやってみるのも方法ですよ。

【追記】
こんなライブラリもあります。
「三輪空司研究室 群馬大学理工学研究院電子情報部門 」
http://www.el.gunma-u.ac.jp/~miwalab/mlib.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: ソートアルゴリズムの可視化

#6

投稿記事 by Dixq (管理人) » 10年前

クイックソートを可視化して分かりやすく教えるソフトを作ったことがあります。
http://dixq.net/sort.html

使っているライブラリはうちで紹介しているDXライブラリです。
http://dixq.net/g/

kopi
記事: 19
登録日時: 10年前

Re: ソートアルゴリズムの可視化

#7

投稿記事 by kopi » 10年前

かなたん さんが書きました:可視化する=動きを画面に出す
ということで、まずは数字の流れを把握する必要があります。
また、ソートの過程を見せるためには、たとえばソートと描画を交互に行う必要があります。
ただ交互に行うだけでは処理が速すぎて人の目には何をやっているのかが分からないので、少なくとも描画の間隔は人がきちんと見れるくらい開けておかなくてはなりません。
そのためにはタイマー処理をする必要があります。
つまり、ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→という感じで繰り返してやれば、ソートアルゴリズムを可視化させることができます。
方針としてまさに望んでいた回答でした。ありがとうございます。
softya(ソフト屋) さんが書きました:ただ、Win32APIは覚えることが多く大変なのでDXライブラリでやってみるのも方法ですよ。

【追記】
こんなライブラリもあります。
「三輪空司研究室 群馬大学理工学研究院電子情報部門 」
http://www.el.gunma-u.ac.jp/~miwalab/mlib.html
DXライブラリで行っている方向でいこうと思います。

追記していただいたリンク先も見てみました。こんなライブラリもあるのかーと感心してしまいました。
Dixq (管理人) さんが書きました:クイックソートを可視化して分かりやすく教えるソフトを作ったことがあります。
http://dixq.net/sort.html

使っているライブラリはうちで紹介しているDXライブラリです。
http://dixq.net/g/
管理人さんのソフトをダウンロードして見てみました。
やっぱり可視化すると分かりやすい上に、再帰関数の説明が分かりやすかったです。


DXライブラリをまだ使ってみたことがないため、まずは管理人さんのサイトでDXライブラリについて知識を深めていきます。

方針がまとまったので、ここでひとまず解決とさせていただきます。
回答していただいたみけCATさん、かなたんさん、softya(ソフト屋)さん、管理人さん、ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る