基本情報技術者試験のバブルソートを、IPAのシラバスVer.9.2と公開問題で整理。隣り合う要素を比べて入れ替える手順を、自作の配列でパスごとに追い、比較回数・入替え回数・安定性、選択ソート・挿入ソート・クイックソートとの見分け方を、検算つきで解説します。
目次
結論:バブルソートは、隣り合う2つの要素を比べ、順序が逆なら入れ替える操作を、配列の端から端まで繰り返す整列(ソート)の方法です。昇順に、左から右へ比べる場合、1回通すたびに、未整列の部分で最も大きい値が右端に決まります。要素数がnなら、最も単純な書き方の比較回数は n(n-1)/2 回です。基本情報技術者試験のシラバスVer.9.2は、バブルソートを整列のアルゴリズムの用語例に挙げています。公開問題には、手順の文からソートの種類を見分ける形(令和8年度 科目A 問2)があります。
シラバスの版:基本情報技術者試験のシラバスはVer.9.2。最終確認日:2026-10-21。出典:IPA 試験要綱・シラバスについて。
シラバスでの位置づけ:整列のアルゴリズムの用語例
シラバスVer.9.2の大分類1 基礎理論/中分類2 アルゴリズムとプログラミング/2. アルゴリズム/(2)代表的なアルゴリズム/① 整列・併合・探索のアルゴリズム に、次の記述があります。
- 「整列のアルゴリズム,併合のアルゴリズム,探索のアルゴリズムの基本的な設計方法を理解する。」
- 用語例:選択ソート,バブルソート,マージソート,挿入ソート,シェルソート,クイックソート,ヒープソート,線形探索法,2分探索法,ハッシュ表探索法
出典:IPA 基本情報技術者試験(レベル2)シラバス Ver.9.2(PDFのページ 13〜14)。ITパスポートのシラバスVer.6.5では、整列のアルゴリズムの用語例が「選択ソート,バブルソート,クイックソート」の3つです(IPA ITパスポート試験 シラバス Ver.6.5)。
計算量(オーダー)は、同じシラバスの「(7)計算量」に「アルゴリズムの評価手法の一つとして,計算量の求め方,オーダー記法を理解する。」とあります(PDFのページ 10)。用語解説はバブルソート・クイックソート・ソートアルゴリズム・オーダー記法・計算量・配列・擬似言語にあります。
バブルソートの手順:パスごとに配列を追う
手順は次のとおりです(昇順に並べる場合)。
- ① 先頭から、隣り合う2要素を順に比べる
- ② 前の要素が後ろの要素より大きければ、2つを入れ替える
- ③ 末尾まで比べ終えたら1パス終了。未整列の範囲の最大値が右端に決まる
- ④ 右端を除いた範囲に対して、①〜③を繰り返す
自作の配列 [7, 3, 9, 2, 5] を昇順に並べます。
| パス | 比較と入替え | パス終了後の配列 | 比較回数 |
|---|---|---|---|
| 1 | 7と3を入替え、7と9は入替えなし、9と2を入替え、9と5を入替え | [3, 7, 2, 5, 9] | 4 |
| 2 | 3と7は入替えなし、7と2を入替え、7と5を入替え | [3, 2, 5, 7, 9] | 3 |
| 3 | 3と2を入替え、3と5は入替えなし | [2, 3, 5, 7, 9] | 2 |
| 4 | 2と3は入替えなし | [2, 3, 5, 7, 9] | 1 |
比較回数は 4+3+2+1=10、入替えは 3+2+1+0=6 回です。検算(別の考え方):n(n-1)/2 に n=5 を代入すると 5×4÷2=10 で、比較回数と一致します。入替え回数は、「左にある要素が右の要素より大きい組」(逆順の組)の数に等しく、[7, 3, 9, 2, 5] では(7,3)(7,2)(7,5)(3,2)(9,2)(9,5)の6組で、入替え6回と一致します。Pythonでパスごとの配列、比較回数、入替え回数を出力して確認しました。
比較回数と計算量:n(n-1)/2 回とオーダー
最も単純な書き方では、未整列の範囲を毎パス最後まで比べます。比較回数は (n-1)+(n-2)+…+1 で、n(n-1)/2 です。
| 要素数n | 比較回数 n(n-1)/2 |
|---|---|
| 5 | 10 |
| 10 | 45 |
| 100 | 4,950 |
| 1,000 | 499,500 |
要素数が10倍になると、比較回数はおよそ100倍になります。この増え方をオーダー記法で O(n²) と書きます(数値はPythonで計算しました)。
入替えが1回もなかったパスで処理を終える書き方(当サイトの呼び方で、早期終了)では、すでに整列済みの配列は1パスで終わります。[1, 2, 3, 4, 5] なら比較は4回です。逆順の [5, 4, 3, 2, 1] では、比較10回・入替え10回で、n(n-1)/2 の入替えが必要になる最悪の場合です。
安定性:同じ値の順序を保つか
値が同じ要素の元の順序が、整列後も保たれる性質を、安定といいます。「前が後ろより大きいときだけ入れ替える」書き方のバブルソートは安定です。自作の確認として、(値, 名前)の組 [(3, a), (1, b), (3, c), (2, d)] を値で昇順に並べると、[(1, b), (2, d), (3, a), (3, c)] になり、値3の a と c の順序は変わりません(Pythonで確認)。「以上」のときにも入れ替える書き方にすると、この性質は成り立ちません。
公開問題で確認できた出題の形:手順の文から、ソートの種類を見分ける
当記事が確認したのは、令和5〜8年度の科目A・B公開問題と、2022年のサンプル問題(科目A・B)です。「バブルソート」という語を含む問題は、確認した範囲にはありません。一方、令和8年度 科目A 問2は、「クイックソートの処理方法を説明したものはどれか」という問題で、4つの選択肢が整列の手順を説明しています。
| 選択肢 | 手順の文(要点) | 当サイトの読み解き |
|---|---|---|
| ア | 整列済みのデータ列の正しい位置に、データを追加する操作を繰り返す | 挿入ソートの手順 |
| イ | 最小値を求め、それを除いた部分から最小値を求める操作を繰り返す | 選択ソートの手順 |
| ウ | 基準値を選び、小さな値のグループと大きな値のグループに分割する操作を繰り返す | クイックソートの手順(この問題の正解) |
| エ | 隣り合ったデータの比較と入替えを繰り返し、小さな値のデータを次第に端の方に移していく | バブルソートの手順 |
出典:令和8年度 科目A 問題冊子(問2)と解答例。右端の列は、当サイトの読み解きです。IPAは選択肢の名前を示していません。エの文は小さな値を端に寄せる向きで書かれています。この記事の例のように大きな値を右端に寄せる向きでも、隣り合う要素の比較と入替えを繰り返す点は同じです。
科目Bでは、令和5年度の問3に、要素番号の範囲を指定して昇順に整列する関数を読む問題、令和6年度に、昇順に整列された2つの配列を併合する関数(merge)を読む問題があります。バブルソートそのものを問う形ではありません(令和5年度・令和6年度の科目B問題冊子の記述)。科目Bの全体像は科目Bの対策、アルゴリズム分野は科目Bのアルゴリズムにまとめています。
各年度の問題は公開問題の一覧や、令和7年度・令和6年度の一覧から解けます。出題の回数や傾向を述べるものではありません。
勉強の進め方(当サイトの提案)
IPAの案内ではなく、当サイトの提案です。
- ① 小さな配列(4〜5要素)で、パスごとの配列を紙に書いて追う。比較回数と入替え回数も数える
- ② 選択・挿入・バブル・クイックの手順を、1行で言い換えられるようにする(挿入=正しい位置に入れる、選択=最小値を選ぶ、バブル=隣同士を入れ替える、クイック=基準値で分ける)
- ③ 擬似言語のバブルソートが出たら、二重の繰返しの範囲(添字の初期値と終了値)を最初に確認する
- ④ 練習問題は科目B 練習20問で、ソートを追う問題を解く
まとめ
- バブルソートは、隣り合う要素を比べ、逆順なら入れ替える操作を繰り返す。1パスごとに未整列の最大値が右端に決まる
- 最も単純な書き方の比較回数は n(n-1)/2 回。例の [7, 3, 9, 2, 5] では比較10回・入替え6回
- 前が後ろより大きいときだけ入れ替える書き方は、安定なソート
- 令和5〜8年度の科目A・B公開問題とサンプル問題に、「バブルソート」の語は出てこない。令和8年度 科目A 問2は、手順の文から種類を見分ける形だった
よくある質問
Qバブルソートは科目Bで出ますか?
当記事が確認した令和5〜8年度の科目A・B公開問題と2022年のサンプル問題には、「バブルソート」という語を含む問題はありませんでした(2026-10-21 時点)。ただし令和8年度 科目A 問2では、バブルソートの手順に当たる文が、クイックソートを選ぶ問題の選択肢の一つとして使われていました。名前を覚えるだけでなく、手順の文を読んで、どのソートか見分けられることが必要です。
Qバブルソートの比較回数はいつも同じですか?
最も単純な書き方(毎回、未整列の範囲を最後まで比べる)では、要素数nのとき必ず n(n-1)/2 回です。要素数が5なら10回、10なら45回になります。入替えが1回もなかったパスで終了する工夫を入れると、すでに整列済みの配列では n-1 回で終わります。どちらの書き方か、問題の擬似言語で必ず確認してください。
Qバブルソートは「安定なソート」ですか?
隣り合う2要素を、前が後ろより大きいときだけ入れ替える書き方なら、同じ値の要素の前後は変わらないので、安定です。等しいときにも入れ替える書き方にすると、安定ではなくなります。この記事の例では、前者の書き方で、同じ値3を持つ2つの要素の順序が保たれました。
Qバブルソートより効率のよいソートを使えばよいのではないですか?
実際の開発では、より効率のよい方法を使います。試験でバブルソートが出てくるのは、手順が単純で、比較と入替えの回数を数えやすいためと考えられますが、これは当サイトの推測で、IPAは理由を示していません。シラバスはバブルソートを、選択ソートやクイックソートと並べて、整列のアルゴリズムの用語例に挙げています。
法令や試験の数字は、改正や年度で変わります。この記事の最終確認日は2026年10月21日です。申込みや合格基準は、必ず試験団体の公式情報で確かめてください。

