第51回
アルゴリズムの基礎・1~カードを使って整列(ソート)を実感しよう

脳トレにも役立ちます(笑)

カードを使った並べ替えをCのソースコードにしてみました。躯――特に手や指先の動きは、脳を活性化します。肉体の動きを整理して理論的なソースコードにする過程は、プログラミングに役立つはずです。

最もシンプルな直接選択法

数値を並べ替えるには、いくつかの方法があります。その中でも、今回試した方法は最もシンプルな仕組みで、処理のメカニズムも非常に分かりやすいものとなっています。

先頭から順番に値を比較していくこの方法を「直接選択法」と言います。直接選択法の仕組みを数学的に書くと、以下のようになります。

部分数列a(i)~a(n-1)の中から最小項を探し
見つかった最小項とa(i)とを交換するという操作を
部分数列a(0)~a(n-1)から始め
部分数列がa(n-1)になるまで繰り返す

考える過程が大切

数値の並べ替え――ソートの手順をまずカードによる手作業で試し、それを文字で表しながらCのソースコードにしてみました。

現実世界では直感的に行える作業も、コンピュータの中では厳密な処理手順として再構築する必要があります。

最初に書きましたが、ここで紹介したソースコードを覚えることが重要なのではありません。実際に手で試した作業を整理し、ソースコードへと展開していくことで、思考の過程が明確な物になっていきます。

処理の手順を(何気なくではなく)『1つひとつ明確に意識して』捉え、それをソースコードに反映する――という過程が重要なのです。

あとがき

今回は、サンプルプログラムの他に、実際に手で並べ替えの過程を試すためのカードを用意しました。「カード.pdf」という名前のPDFファイルで、中には最初に試した6枚の数値入りカードと、1~10までの番号が入ったカード、白紙の呼びカード2枚の画像データが保存されています。

厚手の紙(ペーパークラフト用のマット紙など)に印刷し、輪郭線で切り取ってご使用ください。

※ 画面上でカードを並べ替えられるSilverlightアプリケーションも用意しています。
  こちらからお試しください。