【日常のアルゴリズム】身長の低い順番に並んでみる(バブルソート)
日常のアルゴリズムを体感するシリーズ。今回はアルゴリズムの定番のひとつである「バブルソート」を身体を使って体験学習できるものとして解説してみたいと思います。
バブルソートとは
バブルソートとは並べ替えを行うアルゴリズムです。名前の由来は、大きな泡が昇っていく様子から名付けられているようですが、アルゴリズムとして理解する際は「隣り同士を比較する」という動きが特徴です。
例えば、1から5までの数字がランダムで配置された状態から、最終的に「左から小さい値から大きな値に並び替える」ことをゴールとして並び替え(ソート)を行ってみましょう。
バブルソートはまず起点となる場所から順番に比較を進めます。今回の場合はいちばん右にある3から始めます。3の隣にある4と比較します。この場合、3よりも4が大きいわけですから、4は3の隣に移動します。
次に、3と1を比較を比較します。3と1では、3の方が大きくなりますので、入れ替えをせずに次に進みます。次々と入れ替えを行い、左の5まで比較を行った結果を見てみましょう。
結果として「1、5、2、3、4」と、並べ替えの前よりは良い状況にはなっているものの、中途半端な状態であることは一目瞭然ですね。この場合はまた右側の4から比較を行い、最終的に5が一番右側に移動するまで比較を繰り返します。
なかなか気の遠くなるような作業ですが、一番シンプルな方法でもあるのです。
バブルソートを体験する「背の順ゲーム」
バブルソートの仕組みを理解するために、授業内では「数字の大小を理解」するために「背の順ゲーム」として活用できるかもしれません。
身長は健康診断などで全員が把握している情報です。優劣を決めるものではないので、バブルソートと上手く融合できるでしょう。5人1チームくらいに分けてランダム(例えば出席番号順や五十音順)で並んでもらいます。
あとは、バブルソートの要領でどのチームが早く並べ替えができるのかを競ってみたり、どのグループが一番手順が少なく並べ替えできるのかを予想してみるなどのゲーム性をもたせながら、バブルソートを楽しく体験してみてはいかがでしょうか。
バブルソートはソートアルゴリズムの基本
今回、紹介したバブルソートは、ソートアルゴリズムの基本でもあります。授業内では、体感しつつ仕組みを理解するとともに、フローチャートとも合わせてしっかりと「アルゴリズム」そのものを理解してもらえるシンプルな構造です。
ゲーム性を意識しすぎて楽しんで終わりになってしまうのではなく、結果として、継続するプログラミング教育の基礎として活用できるようにしてみてはいかがでしょうか。