「VisuAlgo」はソートやサーチなど様々なアルゴリズムをブラウザ上で再現してくれるサイトです。
例えばソートアルゴリズムならば実際に値が並び替えていく様子が画面に逐次表示されていくので、ソートアルゴリズムの特徴を分かりやすく理解することができます。
ついでに画面の横に対応するソースコード(擬似コード?)も表示されるので、プログラムでどう実現すればよいか知りたい人にとっても参考になるでしょう。
ソートアルゴリズム
試しに一番分かりやすいソートアルゴリズムを実行してみます。
ソートアルゴリズムのページを開いて、画面上部でソートの種類を選択し(例: BUBBLE)、次に「Create」でデータを作成、最後に「Sort」から「Go」をクリックすればアルゴリズムを実行することができます。
実行中は、画面真ん中のグラフィックスが随時更新され、画面右側のソースコードもステップ実行されていきます。また画面右の真ん中の水色の部分では、今何の処理を行っているか平易な英語で説明してくれるのですごく分かりやすいと思います。
アルゴリズムは左右矢印キーで1ステップずつ実行させることもできるので、じっくり考えたい時も安心です。
リスト
試しにもう一つリストアルゴリズムを試してみました。ここでは、Linked List、Stack、Queue、Double Linked List、Dequeといったおなじみのデータ構造に対して、検索、挿入、削除など基本的な操作を実行する様子を観察することができます
例えば「Insert」を選んで、2番目の要素の後に90をいれるとこのように表示されます。Linked Listに値を挿入するためには、頭から要素をたどっていく必要があることがよく分かります。
まとめ
VisuAlgoは、アルゴリズムを学習する際に頭の中で考えたり、紙で再現したりする手間を減らしてくれる有益なサイトだと思います。取り上げられているアルゴリズムもソートやサーチといった基本的なものばかりでなく、Suffix Array / Suffix Treeのような最近注目されているアルゴリズムまでカバーしていて有用度が高そうです。
アルゴリズム学習中の方、または一回覚えたけどもう忘れちゃった方の復習用としてブックマークしておくとよさそうです。