並び替えって奥が深い

カードを並べて見よう!!

例えば、1から100での数字が書かれたカード100枚を小さい順に並べたいとします。
みなさんはどうやって並べますか?
・小さい順にカードを探して並べる
・1~10,11~20のようにグループ分けしてから並べる
どちらの方が速く並べることができるでしょう。

小さい順に並べてみる

 ①全てのカードから1番小さいカードを見つける。
 ②正しい場所に置く。
 ③全て並ぶまで①②を繰り返す。

この方法だと全てのカードを正しい場所に並べるためには毎回残っている全てのカードを見る必要がありとてもたくさんの手間がかかります。

では先にグループ分けしていたらどうでしょうか

先にグループ分けしてから並べてみる

 ①先にグループ分けを行う。
 ②それぞれのグループ内で並び替えを行う。
 ③並び替えたグループを繋げる

この方法では最初にグループ分けをする必要はあるもののそれぞれのグループ内での並び替えは極めて速く終わります。


どちらの方が良いアルゴリズム?

カードの枚数が多ければ多いほど毎回全てのカードを見直すのは大変です。ですが枚数が少ない時はグループしてもそのまま並べてしまった方が良いことがあります。
→枚数が少ない時は小さい順、枚数が多い時はグループ分けしてからの方が速い

他にもどのようにグループ分けをすると良い?具体的には何枚以上ではグループ分けした方が良い?などを考える事ができます。アルゴリズムの楽しさが伝わってきたでしょうか。少しでも並び替えについて興味が出たら「ソートアルゴリズム」という言葉について検索してみてください。

次のページではアルゴリズムにおいて「速い」とはどういうことか見ていこうと思います。

上部へスクロール