整列(ソート)(sorting)

データを決まった順序に並べ替えること。方法によって処理時間の伸び方が大きく違う。

もう少し詳しい説明

整列(ソート)は、データを決まった順序に並べ替えることです。

なぜ並べ替えを行うのかというと、さまざまな処理を速くするためです。二分探索は整列済みでなければ使えませんし、同じ値をまとめて数えるのも、並んでいれば1回通るだけで済みます。並べ替えそのものが目的ではなく、その後の処理のために行います。

大事なのは、どの方法を使うかで処理時間が大きく変わることです。

バブルソートO(n²) 隣どうしを比べて入れ替える選択ソートO(n²) いちばん小さいものを選んで前へ挿入ソートO(n²) 整列済みの列へ差し込むマージソートO(n log n) 半分に分けて、合体させるクイックソートO(n log n)(平均) 基準より大小で分ける
代表的な並べ替えの計算量です。上の3つは仕組みが単純なぶん遅く、下の2つは速いかわりに手順が込み入っています。試験では、この「どちらのグループか」を答えさせる形がいちばん多く出ます。

まずは単純な3つ(O(n²))

仕組みが単純なかわりに遅いグループです。名前と動きの対応がそのまま問われます。

名前何をするか
バブルソート隣どうしを比べて、順序が逆なら入れ替える
選択ソート未整列の中からいちばん小さいものを選んで、前に置く
挿入ソート整列済みの列に、次の1件を正しい位置へ差し込む

バブルソートを1回分だけ追ってみます。

はじめ53815と3 → 入れ替え35815と8 → そのまま35818と1 → 入れ替え3518 ← 確定
バブルソートの1回目です。隣どうしを左から順に比べ、大きいほうが右に来るように入れ替えます。1回通すと、いちばん大きい8が右端まで運ばれて確定します。これを、確定していない範囲で繰り返します。

隣どうしを左から順に比べ、大きいほうを右へ送ります。1回通すと、いちばん大きい値が右端まで運ばれて確定します。泡(バブル)が浮かび上がるように値が移っていくので、この名前が付いています。

これを、確定していない範囲について繰り返します。n 件なら、n 回近く繰り返し、1回ごとに n 件近く比べるので、全体では n × n、つまり O(n²) になります。

速い2つ(O(n log n))

マージソートは、データを半分ずつに分けていき、最後に合体させながら並べ直す方法です。段の数が log₂n、各段で全 n 件を扱うので、O(n log n) になります。

クイックソートは、基準となる値(ピボット)を1つ決めて、それより小さい組と大きい組に分けることを繰り返します。平均では O(n log n) で、実際にとても速い方法です。

ただしクイックソートには注意点があります。基準の選び方が悪いと、分けたつもりが片側に偏り、いちばん回数が多くなる場合には O(n²) まで落ちます。「クイックソートは常に速い」と書かれた選択肢は誤りです。

平均最大(いちばん回数が多いとき)
マージソートO(n log n)O(n log n)
クイックソートO(n log n)O(n²)
ヒープソートO(n log n)O(n log n)

なお、この「最大」のことを、試験の問題文や参考書では最悪の場合(最悪計算量)と書きます。言葉は強いのですが、いちばん運が悪かったときの回数という意味しかありません。

安定な整列

もう1つ、応用情報で問われる性質があります。

同じ値が複数あったとき、元の並び順が保たれる整列を、**安定(stable)**であるといいます。

たとえば「点数」で並べ替えるとき、同じ80点のAさんとBさんが元の順(A→B)のまま残れば安定、入れ替わる可能性があれば安定ではありません。

安定安定ではない
バブルソート、挿入ソート、マージソート選択ソート、クイックソート、ヒープソート

名簿を「クラス順に並べてから、点数順に並べ直す」といった二段階の並べ替えをするとき、安定かどうかが効いてきます。

どれを選ぶか

件数が少ないなら、単純な方法で十分です。O(n²) と O(n log n) の差は、件数が大きくなって初めて効いてきます。ほとんど並んでいるデータを仕上げるだけなら、挿入ソートが速いこともあります。

件数が多いなら O(n log n) のグループを使います。安定さが必要ならマージソート、速さを優先するならクイックソート、という選び方になります。

覚え方:2つのグループに分けるだけ

試験で問われるのは、ほとんどがグループ分けです。

そのうえで、クイックソートは最大で O(n²) と、選択ソートとクイックソートは安定ではない。この2つの例外を足せば、出題される範囲は押さえられます。

試験ではこう出る

科目A(旧・午前)のアルゴリズム分野で頻出です。多いのは、整列方法の名前と動きを結び付けさせる問題と、計算量を選ばせる問題です。バブルソートの途中経過を示して「何回目の走査か」を答えさせる形も出ます。応用情報では、安定かどうかや、クイックソートの回数が最大になる条件まで踏み込みます。

途中経過を追う問題は、1回の走査で何が確定するかを先に押さえてください。バブルソートなら右端に最大値、選択ソートなら左端に最小値が確定します。確定した側がどちらかが分かれば、示された配列がどの方法の途中かを見分けられます。

関連する用語

計算量
件数が増えたときの処理時間の伸び方。整列の方法を比べる物差しになる
二分探索
並んでいるデータを半分ずつ絞る探し方。整列が済んでいることが前提
バブルソート
隣どうしを比べて入れ替える、いちばん単純な方法。計算量は O(n²)
マージソート
半分に分けてから合体させる方法。計算量は O(n log n)
クイックソート
基準値より大きい組と小さい組に分けていく方法。平均は速いが、最大では O(n²)
安定な整列
同じ値どうしの元の並び順が、並べ替えた後も保たれる性質

ミニクイズ

整列アルゴリズムのうち、平均計算量が O(n log n) であるものはどれか。

正解は 4番:マージソート

マージソートは、データを半分ずつに分けてから順に合体させていく方法で、段の数が log₂n、各段で全 n 件を扱うため、計算量は O(n log n) になります。バブルソート・選択ソート・挿入ソートの3つは、平均でも最大でも O(n²) です(挿入ソートは、すでにほとんど並んでいる場合にかぎり O(n) まで速くなります)。この3つが遅いグループ、マージソートとクイックソート(平均)が速いグループ、という2つに分けて覚えるのが、出題への近道です。

間違えた用語の復習リストを見る →

最終更新:2026-09-23