戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

ITパスポート 2025年 98


問題文

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

選択肢

2
3
4(正解)
5

🔒 解説は解答すると表示されます

問題タイトル +【ITパスポート 解説】

4個の要素から成るデータの並びを、手順(1)〜(3)を繰り返して昇順に整列するとき、(1)〜(3)の一連の手順は何回実行されるか。
データの並び:[27, 42, 33, 12]
選択肢:ア: 2、イ: 3、ウ: 4、エ: 5

正解の理由

この手順は「整列対象から最後の要素を1個ずつ外していく(=固定していく)」ことを1回の実行で必ず1個分進めます。初めは4個の要素があり、最後の要素を外す(固定する)操作を4回行わないと整列対象が0個になり終了しません。したがって正しい回数は (4回)になります。
※表現を変えると、手順の繰り返し条件が「整列対象に要素が1個以上残っていれば続ける」となっているため、最後の1個だけのときにももう一度(1)〜(3)が実行され、その後0個になって終了します。

解法ステップ

  1. 手順の流れを整理する
    • (1) 最大値を選び最後の要素と入れ替える(最後の位置に正しい値を置く)
    • (2) その最後の要素を整列対象から外す(固定)
    • (3) 整列対象に1個以上あれば繰り返す
  2. 重要な観点:1回の(1)〜(3)で「整列対象の要素数が1つ減る」ことを確認する。
  3. 初めの要素数が4なら、要素数を0にするまで操作を繰り返す必要がある → 4回。
  4. 実際に与えられた並びでシミュレーションすると理解が深まる(下に示す)。
実際のシミュレーション(各回の後の配列)
  • 初期:[27, 42, 33, 12]
  • 1回目:最大42を最後と入れ替え → [27, 12, 33, 42](最後の42を固定) 残り3個
  • 2回目:残り[27,12,33]で最大33を最後と入れ替え → [27,12,33,42](33を固定) 残り2個
  • 3回目:残り[27,12]で最大27を最後と入れ替え → [12,27,33,42](27を固定) 残り1個
  • 4回目:残り[12]で最大12を最後と入れ替え(自分自身) → [12,27,33,42](12を固定) 残り0個 → 終了
以上より、(1)〜(3)の一連の手順は4回実行されます。

選択肢別の誤答解説

  • ア: 2
    誤りの理由:2回では整列対象が4→3→2個としかならず、まだ要素が残った状態で終了してしまうため不十分です。
  • イ: 3
    誤りの理由:よくある誤りです。選択ソート(最大値を最後に置く)では「残り1個のときにもう一度実行する」仕様を見落として、3回(=n-1回)と考えてしまう人が多いです。本問題の条件では残り1個でも(1)〜(3)を行うため、もう1回必要です。
  • エ: 5
    誤りの理由:5回だと要素数0からさらに余分に繰り返している計算になります。手順(2)で毎回1個を外すため、5回は過剰です。

よくある誤解

  1. 「整列が済むのは要素が1個になったとき」と考える誤解
    • 本問題では「整列対象に要素が1個以上残っていれば続ける」と書かれています。つまり残り1個のときも最後の処理(最大選択と除外)を行います。ここを読み違えると回数が1少なくなります。
  2. 「最後の1個は入れ替え不要だからカウントしない」と考える誤解
    • 実際には最後の1個でも(1)の『最大値を選び、最後の要素と入れ替える』の処理を行う(置き換えは自分自身でも実行したことになる)ため、その回もカウントします(=1回分の処理)。

補足コラム

この手順は「選択ソート(selection sort)」と呼ばれるアルゴリズムの一種です。選択ソートは毎回未確定部分の最大(または最小)を見つけて正しい位置に置く方法で、要素数に対して基本的にの比較回数がかかります(初学者に大事な点:小さいデータ数なら単純で実装しやすい一方、大量データには向きません)。本問のポイントは「ループの終了条件(残り1個の扱い)」を正しく読むことです。

FAQ

Q. 最後の1個は実際に動かないのに、なぜ1回カウントするのですか?
A. 手順には「最大値を選んで最後の要素と入れ替える」と明記されています。対象が1個ならその要素が最大で、入れ替えは自分自身との入れ替えになります。操作自体は行われるため1回とカウントします。
Q. 一般に要素数の配列では何回繰り返すのですか?
A. 本手順の条件ならば、回繰り返します。理由は1回につき整列対象が1個減るため、0個にするには回必要だからです。
Q. もし(3)の条件が「整列対象に要素が2個以上残っていれば」と書かれていたら?
A. その場合は繰り返し回数は回になります。問題の文言をよく読んで条件を把握することが重要です。

関連キーワード: 選択ソート、最大値の選択、繰り返し処理、オフバイワン、アルゴリズム理解
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について