バブルソートを覚える前に。まずはトランプで考えてみよう

広告

「バブルソート」「選択ソート」「挿入ソート」

基本情報技術者試験を勉強し始めると、さまざまなアルゴリズムが登場します。

しかし、多くの初心者はここでつまずきます。

「名前は覚えたけれど、何が違うの?」
「なぜこんなに種類があるの?」

そんな疑問を持つ人も多いのではないでしょうか。

実は、アルゴリズムは最初から誰かが決めたものではありません。

人間が「どうすればもっと効率よくできるだろう」と考えた結果、生まれた手順なのです。

今日は、プログラムではなくトランプを使って考えてみましょう。


まずはゲームをしてみよう

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

まるで手札を整理する感覚です。


実は全部「正解」

ここが大切なポイントです。

どの方法も、

「カードを順番に並べる」という目的は達成できます。

つまり、

どれも立派なアルゴリズムなのです。

アルゴリズムとは、

目的を達成するための手順

のことだからです。


実は名前が付いている

ここで初めて、

それぞれの方法には名前があることを紹介します。

人が考えた方法アルゴリズム名
一番小さいものを探す選択ソート
隣同士を交換するバブルソート
手札のように差し込む挿入ソート

つまり、

アルゴリズムとは難しいものではなく、人が考えた作業手順に名前が付いているだけなのです。


コンピュータも同じことをしている

コンピュータは、

突然「バブルソート」を思いつくわけではありません。

人間が考えた手順を、

そのまま忠実に実行しているだけです。

つまり、

人間が手順を考える
        ↓
アルゴリズムになる
        ↓
プログラムとして書く
        ↓
コンピュータが実行する

という流れなのです。


基本情報技術者試験では何を学ぶの?

基本情報技術者試験では、

「バブルソートを暗記してください。」

という試験ではありません。

本当に学ぶべきことは、

「この手順なら、どのように動くのか」を理解することです。

その手順をフローチャートや擬似言語で表現し、

プログラムとして実装できるかが問われます。


おわりに

アルゴリズムという言葉を聞くと、難しい数学やプログラムを思い浮かべるかもしれません。

しかし、その本質はとても身近なものです。

「どうすればもっと早く終わるだろう。」

「どうすれば無駄なく並べられるだろう。」

そんな工夫の積み重ねが、アルゴリズムです。

もし基本情報技術者試験のソートが難しく感じたら、一度トランプを並べてみてください。

きっと、「なるほど、だからこんなアルゴリズムがあるのか」と実感できるはずです。

アルゴリズムは、暗記するものではありません。

人間の知恵から生まれた「手順」を理解することが、学習の第一歩なのです。

訪問数 5 回, 今日の訪問数 5回

広告

C#

Posted by hidepon