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
データの並び:[27, 42, 33, 12]
選択肢:ア: 2、イ: 3、ウ: 4、エ: 5
正解の理由
この手順は「整列対象から最後の要素を1個ずつ外していく(=固定していく)」ことを1回の実行で必ず1個分進めます。初めは4個の要素があり、最後の要素を外す(固定する)操作を4回行わないと整列対象が0個になり終了しません。したがって正しい回数は ウ(4回)になります。
※表現を変えると、手順の繰り返し条件が「整列対象に要素が1個以上残っていれば続ける」となっているため、最後の1個だけのときにももう一度(1)〜(3)が実行され、その後0個になって終了します。
解法ステップ
- 手順の流れを整理する
- (1) 最大値を選び最後の要素と入れ替える(最後の位置に正しい値を置く)
- (2) その最後の要素を整列対象から外す(固定)
- (3) 整列対象に1個以上あれば繰り返す
- 重要な観点:1回の(1)〜(3)で「整列対象の要素数が1つ減る」ことを確認する。
- 初めの要素数が4なら、要素数を0にするまで操作を繰り返す必要がある → 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個は入れ替え不要だからカウントしない」と考える誤解
- 実際には最後の1個でも(1)の『最大値を選び、最後の要素と入れ替える』の処理を行う(置き換えは自分自身でも実行したことになる)ため、その回もカウントします(=1回分の処理)。
補足コラム
この手順は「選択ソート(selection sort)」と呼ばれるアルゴリズムの一種です。選択ソートは毎回未確定部分の最大(または最小)を見つけて正しい位置に置く方法で、要素数に対して基本的にの比較回数がかかります(初学者に大事な点:小さいデータ数なら単純で実装しやすい一方、大量データには向きません)。本問のポイントは「ループの終了条件(残り1個の扱い)」を正しく読むことです。
FAQ
Q. 最後の1個は実際に動かないのに、なぜ1回カウントするのですか?
A. 手順には「最大値を選んで最後の要素と入れ替える」と明記されています。対象が1個ならその要素が最大で、入れ替えは自分自身との入れ替えになります。操作自体は行われるため1回とカウントします。
A. 手順には「最大値を選んで最後の要素と入れ替える」と明記されています。対象が1個ならその要素が最大で、入れ替えは自分自身との入れ替えになります。操作自体は行われるため1回とカウントします。
Q. 一般に要素数の配列では何回繰り返すのですか?
A. 本手順の条件ならば、回繰り返します。理由は1回につき整列対象が1個減るため、0個にするには回必要だからです。
A. 本手順の条件ならば、回繰り返します。理由は1回につき整列対象が1個減るため、0個にするには回必要だからです。
Q. もし(3)の条件が「整列対象に要素が2個以上残っていれば」と書かれていたら?
A. その場合は繰り返し回数は回になります。問題の文言をよく読んで条件を把握することが重要です。
A. その場合は繰り返し回数は回になります。問題の文言をよく読んで条件を把握することが重要です。
関連キーワード: 選択ソート、最大値の選択、繰り返し処理、オフバイワン、アルゴリズム理解

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

