令和7年度98テクノロジ系

ITパスポート 令和7年度 問98:algorithmに関する問題

4個の要素から成るデータの並びを,次の手順を繰り返して昇順に整列するとき,整列が終了するまでに(1)から(3)の一連の手順は,何回実行されるか。ここで,最初はデータの並び全体を整列対象とする。データの並び: [27, 42, 33, 12]。[手順] (1)整列対象中の要素の最大の値を選び,最後の要素と入れ替える。(2)最後の要素を整列対象から外す。(3)整列対象に要素が1個以上残っていれば,(1)から(3)の一連の手順を実行する。残っていなければ,整列完了なので終了する。

  • a2
  • b3
  • c4正答
  • d5
正答:C4

AI解説(初心者・標準・上級)

理解度に合わせて3レベルの解説を無料で読めます。

初心者向けまずはここから。やさしく要点を解説

答えは c「4」 です。

やることは「一番大きい数字を見つけて、列のいちばん後ろの席と入れ替える→その後ろの席は確定したので外す」を、残りがなくなるまでくり返すだけです。

[27,42,33,12] は4人います。

1回目:4人から最大を後ろへ→3人残る

2回目:3人から最大を後ろへ→2人残る

3回目:2人から最大を後ろへ→1人残る

4回目:1人だけ→そのまま確定して0人に→終了

くり返した回数は 4回 です。

👉 覚え方:要素が1個になっても"もう1回"回って終わる。だから人数とおなじ4回。

標準試験対策の基準レベル

なぜこれが正解か

正解は c(4回)。これは選択ソート(最大値を末尾へ送る方式)の動作。手順(3)が「要素が1個以上残っていれば繰り返す」なので、整列対象が0個になるまで(1)〜(3)を回す。

[27,42,33,12](4要素)でのトレース:

1. 4要素→最大42を末尾12と交換→[27,12,33,42]、42を外す(残3)

2. 3要素[27,12,33]→最大33を末尾と交換→[27,12,33]、外す(残2)

3. 2要素[27,12]→最大27を末尾と交換→[12,27]、外す(残1)

4. 1要素[12]→最大は自分自身、交換し外す(残0)→終了

よって実行回数は 4回

ひっかけ注意

「n要素なら n−1 回」と覚えていると3回と誤答する。本問は手順(3)の判定が「1個以上残っていれば繰り返す」ため、残り1個でももう一巡するのがポイント。判定条件を丁寧に読むこと。

上級誤答論破・背景理論まで深掘り

理論的背景

この問題で示されているアルゴリズムは「選択ソート(Selection Sort)」の変形で、各パスで最大値を末尾に移動させる降順選択ソートを昇順に利用している。計算量はO(n²)であり、n要素の場合に最大n-1回のパスが必要となる。ただし本問の「整列対象に要素が1個以上残っていれば繰り返す」という終了条件に注目する必要がある。要素数n=4の場合の具体的な実行フロー:第1回([27,42,33,12]→最大42を末尾と交換→[27,12,33,42])、第2回([27,12,33]→最大33を末尾と交換→[27,12,33])、第3回([27,12]→最大27を末尾と交換→[12,27])、第4回([12]→要素1個→入れ替え実施後に整列対象から外す→空になる)。手順(3)の「整列対象に要素が1個以上残っていれば(1)から実行」という条件は「1個でも実行する」ため、最後の1要素の状態でも(1)(2)を実行してから終了する。したがって4回実行される。

実務での使われ方

選択ソートは実装が単純明快なため、アルゴリズム教育の入門として広く採用されているが、本番システムでは使われることはほぼない。実業務ではクイックソート(O(n log n)平均)、マージソート(O(n log n)安定)、あるいはTimSort(Python・Javaの標準ライブラリ実装)が使われる。TimSortはマージソートと挿入ソートを組み合わせた実用的なアルゴリズムで、現実データ(部分的に整列済みのケースが多い)に対して高いパフォーマンスを発揮する。データベースのインデックス構造(B+木)やハードウェアソータなど特殊用途では全く異なるアルゴリズムが用いられるが、ITパスポート〜基本情報の範囲では「アルゴリズムのステップ数を手で数える能力」が問われる。

試験での位置づけ

アルゴリズムのトレースは基本情報技術者試験・科目Bの中核テーマだが、ITパスポートでも「何回ループするか」という計算問題として出題が増えている。本問は「手順を1回ずつ丁寧に追う」トレース能力の測定問題で、よくある誤答パターンは「要素が1個残った時点で終了」と判断してしまう3回(c以外の選択肢)を選ぶミスである。本問の解法ポイントは「終了条件を正確に読む」こと。「残っていなければ終了」は「1個残っていても実行する」を意味する。近年のシラバス改訂でプログラミング的思考・疑似コード読解が強化され、このタイプの問題は今後さらに増加傾向にある。

選択肢の発展補足

選択肢a「2回」はn-2回(要素を2個残した時点で止まると誤解した場合)。選択肢b「3回」はn-1回(要素1個残った時点で止まると誤解した場合)で最も多い誤答パターン。これはバブルソートの標準的な実行回数(n-1パス)と混同することによる。選択肢d「5回」はn+1回(存在しない6個目のループを実行するという誤解)。4要素のソートアルゴリズムの比較:バブルソート最悪6回の比較、挿入ソート最悪6回の比較、選択ソート常に6回の比較(ただし交換回数は最大3回)。選択ソートの特徴は「交換回数が常にn-1回以下」で、交換コストが高い場合(ディスクI/O等)には有利になるケースもある。

出典・引用について

出典:IPA(情報処理推進機構)公式 ITパスポート試験 令和7年度98/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。

テクノロジ系の他の過去問

55
security
56
database
57
database
58
technology_element
59
network

あなたの弱点を診断して、合格までの最短ルートを

この分野を連続演習し、AIがあなたの弱点を分析。合格ナビならITパスポートの過去問を解きながら学べます。