最終更新日:2026年8月30日
fe fe-technology algorithm sorting
まず結論
基本情報技術者試験でソートアルゴリズムを見分けるときは、「何を基準に、どのように並べ替えるか」を見ます。
まずは次の4つを押さえれば、多くの選択肢を切れます。
隣同士を比較して交換
→ バブルソート
最小値を探して前へ移す
→ 選択ソート
整列済み部分の正しい位置へ入れる
→ 挿入ソート
基準値(ピボット)で小さい側・大きい側に分ける
→ クイックソート
特にクイックソートは、基準値を選んで分割するという表現が決め手です。
直感的な説明
数字が書かれたカードを小さい順に並べる場面を考えます。
同じ「並べ替え」でも、やり方はそれぞれ違います。
| 方法 | 直感的なイメージ |
|---|---|
| バブルソート | 隣のカードと比べながら、順番が逆なら交換する |
| 選択ソート | 残っているカードから最小のものを探して前へ置く |
| 挿入ソート | 既に並んでいる部分の正しい位置へカードを差し込む |
| クイックソート | 基準のカードを決め、小さい組と大きい組に分ける |
試験ではアルゴリズム名そのものより、説明文に出てくる動作を拾うのがコツです。
定義・仕組み
バブルソート
隣り合う二つの要素を比較し、順序が逆なら交換します。これを繰り返すことで、大きい値や小さい値が端へ少しずつ移動します。
判断キーワードは、「隣り合う」「比較」「交換」です。
選択ソート
未整列部分から最小値(または最大値)を探し、先頭の要素と交換します。
判断キーワードは、「最小値を探す」「未整列部分から選ぶ」です。
挿入ソート
整列済み部分に新しい要素を一つずつ取り込み、正しい位置へ挿入します。
判断キーワードは、「整列済み部分」「正しい位置へ挿入」です。
クイックソート
基準値(ピボット)を一つ選び、データを基準値より小さい側と大きい側に分割します。分割した各グループでも同じ処理を繰り返します。
基準値を選ぶ
↓
小さい側 / 大きい側に分ける
↓
それぞれのグループでも同じ処理を行う
この「分割して、さらに同じ処理を繰り返す」という考え方は、再帰処理とは?呼び出しと戻りを追う方法にもつながります。
探索アルゴリズムとの違いを確認したい場合は、ブロック探索とは?平均比較回数を公式なしで求める方法も参考になります。
基本情報技術者試験の出題範囲は、IPA:試験要綱・シラバスについて で確認できます。
科目Aでどう出る?
科目Aでは、アルゴリズムの処理方法を文章で示し、該当する名称を選ばせる問題が典型です。
文章を最初から細かく追うより、次の単語を探します。
| 問題文の手掛かり | 判断 |
|---|---|
| 隣り合うデータを比較・交換 | バブルソート |
| 最小値・最大値を探す | 選択ソート |
| 整列済み部分の適切な位置に追加 | 挿入ソート |
| 基準値・ピボットで二つに分割 | クイックソート |
特に「繰り返す」という言葉だけでは判断できません。どのソートも処理を繰り返すため、繰り返し方の違いを見る必要があります。
どんな場面で使う?
ソートは、データを一定の順序に並べ、その後の検索や集計をしやすくするときに使います。
例えば、
- 数値を小さい順に並べる
- 名前を五十音順に並べる
- 日付を古い順・新しい順に並べる
といった処理です。
FEでは、実務でどのアルゴリズムを採用するかよりも、処理手順を見てアルゴリズム名を判定する力がまず重要です。
科目Bでは、疑似言語で比較・交換・分割の処理が示されたときに、配列の状態がどう変わるかを追えるようにしておくと役立ちます。
よくある誤解・混同
「交換する」と書いてあればバブルソート
選択ソートでも要素の交換は行います。
バブルソートの決め手は、隣り合う要素を比較することです。
「最小値を前へ移す」と「正しい位置へ挿入する」を混同する
残り全体から最小値を探す
→ 選択ソート
一つの値を整列済み部分へ差し込む
→ 挿入ソート
と切り分けます。
クイックソートは「高速なソート」という説明だけで選ぶ
名前に「クイック」とありますが、試験での決め手は速さではありません。
基準値(ピボット)を選び、データを二つのグループに分割することが本質です。
基準値そのものが最終的な中央の値だと思う
ピボットは、データを分割するための基準として選ぶ値です。必ず中央値を選ぶという意味ではありません。
まとめ(試験直前用)
- 隣同士を比較・交換 → バブルソート
- 最小値を探して前へ → 選択ソート
- 整列済み部分の正しい位置へ入れる → 挿入ソート
- 基準値(ピボット)で小さい側・大きい側に分割 → クイックソート
- 「交換」「繰り返す」だけでは決めず、どのように比較・分割するかを見る