こんばんは。
今日、下のような動画を発見しました。
[nico]http://www.nicovideo.jp/watch/sm20076984[/nico]
このようなソートアルゴリズムを可視化するプログラムを書いてみたい、と思ったのですが、
どのような環境が必要でしょうか?開発言語としてはC言語がいいです。
今現在、C言語プログラムを書くときの環境は
OS : windows 7 64bit
コンパイラ : bcc5.5.1
となっています。
ソートアルゴリズムの可視化
Re: ソートアルゴリズムの可視化
C言語でWin32 APIを使えば表示はできると思います。
動画にするなら、C言語+libpngで画像を書き出し、ffmpegでつなげて動画にするという方法があります。
動画にするなら、C言語+libpngで画像を書き出し、ffmpegでつなげて動画にするという方法があります。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: ソートアルゴリズムの可視化
みけCATさん、情報ありがとうございます。みけCAT さんが書きました:C言語でWin32 APIを使えば表示はできると思います。
動画にするなら、C言語+libpngで画像を書き出し、ffmpegでつなげて動画にするという方法があります。
一応、ネットで調べてみたんですが
http://www.kumei.ne.jp/c_lang/sdk/sdk_23.htm
http://okwave.jp/qa/q7796780.html
このくらいしか出て来ず。
もっとこういうのから勉強すればいいよって分かるサイトなど教えていただけないでしょうか。
簡単なバブルソートからでも実現しようと思ったんですが、画面に描画してアニメーションにする方法が教えていただいた方法では未熟な私ではかなり曖昧にしか分からないので、方向性を教えていただきたいです。
Re: ソートアルゴリズムの可視化
私はWin32 APIをまともに触った経験がありませんが、MFC(C++)というのを使ってバブルソートやクイックソートなどを可視化した経験があったので、その動きについて少し書いてみます。
可視化する=動きを画面に出す
ということで、まずは数字の流れを把握する必要があります。
また、ソートの過程を見せるためには、たとえばソートと描画を交互に行う必要があります。
ただ交互に行うだけでは処理が速すぎて人の目には何をやっているのかが分からないので、少なくとも描画の間隔は人がきちんと見れるくらい開けておかなくてはなりません。
そのためにはタイマー処理をする必要があります。
つまり、ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→という感じで繰り返してやれば、ソートアルゴリズムを可視化させることができます。
可視化する=動きを画面に出す
ということで、まずは数字の流れを把握する必要があります。
また、ソートの過程を見せるためには、たとえばソートと描画を交互に行う必要があります。
ただ交互に行うだけでは処理が速すぎて人の目には何をやっているのかが分からないので、少なくとも描画の間隔は人がきちんと見れるくらい開けておかなくてはなりません。
そのためにはタイマー処理をする必要があります。
つまり、ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→という感じで繰り返してやれば、ソートアルゴリズムを可視化させることができます。
わからないことも、ブログに書いているうちにひらめくこともある。
本当に行き詰ったら、考え直すのも1つの手かな。
本当に行き詰ったら、考え直すのも1つの手かな。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: ソートアルゴリズムの可視化
リンクで貼られた最初の猫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
「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: ソートアルゴリズムの可視化
クイックソートを可視化して分かりやすく教えるソフトを作ったことがあります。
http://dixq.net/sort.html
使っているライブラリはうちで紹介しているDXライブラリです。
http://dixq.net/g/
http://dixq.net/sort.html
使っているライブラリはうちで紹介しているDXライブラリです。
http://dixq.net/g/
Re: ソートアルゴリズムの可視化
方針としてまさに望んでいた回答でした。ありがとうございます。かなたん さんが書きました:可視化する=動きを画面に出す
ということで、まずは数字の流れを把握する必要があります。
また、ソートの過程を見せるためには、たとえばソートと描画を交互に行う必要があります。
ただ交互に行うだけでは処理が速すぎて人の目には何をやっているのかが分からないので、少なくとも描画の間隔は人がきちんと見れるくらい開けておかなくてはなりません。
そのためにはタイマー処理をする必要があります。
つまり、ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→ちょっとソート→その時の数列を何かしらの表現方法で画面に描画→少し待つ→という感じで繰り返してやれば、ソートアルゴリズムを可視化させることができます。
DXライブラリで行っている方向でいこうと思います。softya(ソフト屋) さんが書きました:ただ、Win32APIは覚えることが多く大変なのでDXライブラリでやってみるのも方法ですよ。
【追記】
こんなライブラリもあります。
「三輪空司研究室 群馬大学理工学研究院電子情報部門 」
http://www.el.gunma-u.ac.jp/~miwalab/mlib.html
追記していただいたリンク先も見てみました。こんなライブラリもあるのかーと感心してしまいました。
管理人さんのソフトをダウンロードして見てみました。Dixq (管理人) さんが書きました:クイックソートを可視化して分かりやすく教えるソフトを作ったことがあります。
http://dixq.net/sort.html
使っているライブラリはうちで紹介しているDXライブラリです。
http://dixq.net/g/
やっぱり可視化すると分かりやすい上に、再帰関数の説明が分かりやすかったです。
DXライブラリをまだ使ってみたことがないため、まずは管理人さんのサイトでDXライブラリについて知識を深めていきます。
方針がまとまったので、ここでひとまず解決とさせていただきます。
回答していただいたみけCATさん、かなたんさん、softya(ソフト屋)さん、管理人さん、ありがとうございました。