バブルソートを覚える前に。まずはトランプで考えてみよう
「バブルソート」「選択ソート」「挿入ソート」
基本情報技術者試験を勉強し始めると、さまざまなアルゴリズムが登場します。
しかし、多くの初心者はここでつまずきます。
「名前は覚えたけれど、何が違うの?」
「なぜこんなに種類があるの?」
そんな疑問を持つ人も多いのではないでしょうか。
実は、アルゴリズムは最初から誰かが決めたものではありません。
人間が「どうすればもっと効率よくできるだろう」と考えた結果、生まれた手順なのです。
今日は、プログラムではなくトランプを使って考えてみましょう。
まずはゲームをしてみよう
1~9のカードを1枚ずつ用意します。
そして、ランダムに並べます。
5 2 8 1 9 4 7 3 6
ルールは一つだけです。
- カードは1枚ずつしか持てない
- 手を2本使って一気に並べ替えることはできない
さて、
どうやって1~9の順番に並べますか?
少し考えてみてください。
人によって方法が違う
実際に考えてもらうと、さまざまな方法が出てきます。
例えば…
方法① 一番小さいカードを探す
まず全部を見て、
「1」を探します。
見つけたら一番左へ。
次は「2」を探して2番目へ。
これを繰り返します。
□□□□□□□
↓
1□□□□□□
↓
12□□□□□
↓
123□□□□
方法② 隣同士を交換する
左から順番に見ていき、
順番がおかしいところだけ交換します。
5 2
↓
2 5
これを最後まで繰り返します。
すると大きい数字が少しずつ右へ移動していきます。
方法③ 手札を整理するように並べる
トランプで遊ぶ人なら、この方法を思いつくかもしれません。
最初のカードを基準にして、
次のカードを適切な場所へ差し込んでいきます。
5
↓
2 5
↓
2 5 8
↓
1 2 5 8
まるで手札を整理する感覚です。
実は全部「正解」
ここが大切なポイントです。
どの方法も、
「カードを順番に並べる」という目的は達成できます。
つまり、
どれも立派なアルゴリズムなのです。
アルゴリズムとは、
目的を達成するための手順
のことだからです。
実は名前が付いている
ここで初めて、
それぞれの方法には名前があることを紹介します。
| 人が考えた方法 | アルゴリズム名 |
|---|---|
| 一番小さいものを探す | 選択ソート |
| 隣同士を交換する | バブルソート |
| 手札のように差し込む | 挿入ソート |
つまり、
アルゴリズムとは難しいものではなく、人が考えた作業手順に名前が付いているだけなのです。
コンピュータも同じことをしている
コンピュータは、
突然「バブルソート」を思いつくわけではありません。
人間が考えた手順を、
そのまま忠実に実行しているだけです。
つまり、
人間が手順を考える
↓
アルゴリズムになる
↓
プログラムとして書く
↓
コンピュータが実行する
という流れなのです。
基本情報技術者試験では何を学ぶの?
基本情報技術者試験では、
「バブルソートを暗記してください。」
という試験ではありません。
本当に学ぶべきことは、
「この手順なら、どのように動くのか」を理解することです。
その手順をフローチャートや擬似言語で表現し、
プログラムとして実装できるかが問われます。
おわりに
アルゴリズムという言葉を聞くと、難しい数学やプログラムを思い浮かべるかもしれません。
しかし、その本質はとても身近なものです。
「どうすればもっと早く終わるだろう。」
「どうすれば無駄なく並べられるだろう。」
そんな工夫の積み重ねが、アルゴリズムです。
もし基本情報技術者試験のソートが難しく感じたら、一度トランプを並べてみてください。
きっと、「なるほど、だからこんなアルゴリズムがあるのか」と実感できるはずです。
アルゴリズムは、暗記するものではありません。
人間の知恵から生まれた「手順」を理解することが、学習の第一歩なのです。






ディスカッション
コメント一覧
まだ、コメントがありません