データをある基準で並べ替えることを、整列 sort あるいはソートといいます。 旧い用語では、分類といわれていました。
データの中で、並べ替えの基準になる部分を、整列のキーといいます。 たとえば、学籍簿を学籍番号の順に並べ替えるときは、 「学籍番号をキーに学籍簿を整列する」といいます。 また、名前順に整列するときは名前が整列のキーになります。
整列のやり方について、古来多くの研究がされてきました。 データの数が少ない場合には、やり方の巧拙はあまり関係がありませんが、 データ件数が多くなるにつれて、違いが明白になります。大雑把にいって、 へたなやり方だと、データ件数の2乗に比例する手間がかかるのですが、 うまくやると、データ件数の N × log N に比例する手間に押さえられます。
整列のアルゴリズムは、以下の4種に大別できます。
- 選択分類 selection sort
「ソートすべきデータの中から、最大のもの(あるいは、最小のもの)を選び出して、 出力領域に順にならべる」という手順を繰返すことにより、 整列する方法。
選択分類のアニメーション
アルゴリズムについては、 13.1 配列に読込んだデータの整列を参照してください。- 挿入分類 insertion sort
「ソートすべきデータを取り出す際にはなんの工夫もせず、 データを出力領域にならべる際に、正しい位置に挿入する」という手順を 繰り返すことにより、整列する方法。
挿入分類のアニメーション
- 交換分類 exchange sort
「ソートすべきデータのなかで、正しい位置関係にないデータの組をみつけて、 入れ替える」という手順を繰り返すことにより、整列する方法。
バブルソートのアニメーション
アルゴリズムについては、 13補.1 バブル・ソートを参照してください。クイックソートのアニメーションアルゴリズムについては、 13補.2 クイック・ソートを参照してください。- その他の分類
データ相互の大小を比較せずに整列する方法として、 13補.3 ラディックス・ソートという アルゴリズムが知られています。