カードを並べて見よう!!
例えば、1から100での数字が書かれたカード100枚を小さい順に並べたいとします。
みなさんはどうやって並べますか?
・小さい順にカードを探して並べる
・1~10,11~20のようにグループ分けしてから並べる
どちらの方が速く並べることができるでしょう。
小さい順に並べてみる
①全てのカードから1番小さいカードを見つける。
②正しい場所に置く。
③全て並ぶまで①②を繰り返す。
この方法だと全てのカードを正しい場所に並べるためには毎回残っている全てのカードを見る必要がありとてもたくさんの手間がかかります。
では先にグループ分けしていたらどうでしょうか
先にグループ分けしてから並べてみる
①先にグループ分けを行う。
②それぞれのグループ内で並び替えを行う。
③並び替えたグループを繋げる
この方法では最初にグループ分けをする必要はあるもののそれぞれのグループ内での並び替えは極めて速く終わります。
どちらの方が良いアルゴリズム?
カードの枚数が多ければ多いほど毎回全てのカードを見直すのは大変です。ですが枚数が少ない時はグループしてもそのまま並べてしまった方が良いことがあります。
→枚数が少ない時は小さい順、枚数が多い時はグループ分けしてからの方が速い
他にもどのようにグループ分けをすると良い?具体的には何枚以上ではグループ分けした方が良い?などを考える事ができます。アルゴリズムの楽しさが伝わってきたでしょうか。少しでも並び替えについて興味が出たら「ソートアルゴリズム」という言葉について検索してみてください。
次のページではアルゴリズムにおいて「速い」とはどういうことか見ていこうと思います。