ITパスポート過去問 令和7年度(2025年)問98
4個の要素から成るデータの並びを,次の手順を繰り返して昇順に整列するとき,整列が終了するまでに(1)から(3)の一連の手順は,何回実行されるか。ここで,最初はデータの並び全体を整列対象とする。
データの並び:[27,42,33,12]
[手順]
- (1) 整列対象中の要素の最大の値を選び,最後の要素と入れ替える。
- (2) 最後の要素を整列対象から外す。
- (3) 整列対象に要素が1個以上残っていれば,(1)から(3)の一連の手順を実行する。残っていなければ,整列完了なので終了する。
選択肢
- ア:2
- イ:3
- ウ:4
- エ:5
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
この手順は、整列対象から最大値を選んで末尾に移し、末尾を整列対象から外す操作を繰り返す選択ソートです。手順(3)は「整列対象に要素が1個以上残っていれば」実行するため、整列対象が1個のときも(1)〜(3)を実行します。要素数が4個なので、(1)〜(3)の一連の手順は4回実行されます。
Point
この問題は、選択ソートの処理内容を手順どおりに追跡し、繰り返し条件(手順(3))を正確に読み取って実行回数を判断する力を問うています。
解くために必要な知識
この問題を解くには、アルゴリズムを手順どおりに追うこと(トレース)と、選択ソートの考え方の理解が必要です。
用語の整理
| 用語名 | 意味 |
|---|---|
| 昇順 | 小さい値から大きい値へ並べることです。 |
| 整列(ソート) | データを規則に従って並べ替えることです。 |
| アルゴリズム | 問題を解くための処理手順のことです。 |
| トレース | 手順を1回ずつ実行し、途中の状態変化を確認することです。 |
| 選択ソート | 対象範囲から最大値(または最小値)を選び、端の要素と入れ替えて、対象範囲を狭める方法です。 |
解くための手順
1. 「整列対象」がどこかを明確にします
-
最初は全要素が整列対象です。
-
(2)で「最後の要素を整列対象から外す」ので、整列対象は毎回1個ずつ減ります。
2. 1回分の処理でやることを整理します
-
(1)整列対象の最大値を選び、整列対象の最後の要素と入れ替えます。
-
(2)整列対象の最後の要素を外します。
3. 終了条件を正確に読み取ります
-
手順(3)は「整列対象に要素が1個以上残っていれば」続きます。
-
したがって、整列対象が1個になっても実行され、整列対象が0個になった時点で終了します。
4. 実行回数の数え方
-
要素数を
nとすると、整列対象を1個ずつ外して0個にするため、実行回数はn回になります。 -
今回は
n = 4なので 4回です。
問題の解法手順
手順(3)の継続条件が「整列対象に要素が1個以上残っていれば実行」であるため、整列対象が1個になっても、(1)から(3)はもう1回実行されます。
解く手順
1回目(整列対象:4個)
-
実行前:
[27, 42, 33, 12] -
(1)最大値42を最後の要素12と入れ替えます。
[27, 12, 33, 42]
-
(2)最後の42を整列対象から外します(42の位置が確定します)。
-
(3)整列対象は3個なので続けます。
2回目(整列対象:3個)
-
整列対象:
[27, 12, 33](全体表示は[27, 12, 33, 42]) -
(1)最大値33を最後の要素33と入れ替えます(変化なし)。
-
(2)最後の33を整列対象から外します(33の位置が確定します)。
-
(3)整列対象は2個なので続けます。
3回目(整列対象:2個)
-
整列対象:
[27, 12](全体表示は[27, 12, 33, 42]) -
(1)最大値27を最後の要素12と入れ替えます。
[12, 27, 33, 42]
-
(2)最後の27を整列対象から外します(27の位置が確定します)。
-
(3)整列対象は1個なので続けます。
4回目(整列対象:1個)
-
整列対象:
[12](全体表示は[12, 27, 33, 42]) -
(1)最大値12を最後の要素12と入れ替えます(変化なし)。
-
(2)最後の12を整列対象から外します。
-
(3)整列対象は0個なので終了します。
以上より、(1)から(3)の一連の手順の実行回数は 4回 です。
選択肢ごとの解説
- ア:不正解
2回目終了時点では整列対象が2個残っており、手順(3)の条件(1個以上)を満たすため、まだ終了しません。
- イ:不正解
3回目終了時点では整列対象が1個残っています。手順(3)は「1個以上」で繰り返すため、もう1回実行が必要です。
- ウ:正解
4回目で整列対象が0個になり、手順(3)の条件を満たさなくなるため終了します。
- エ:不正解
4回目で終了するため、5回目は実行されません。
まとめ
この手順は、整列対象から最大値を選んで末尾に移し、末尾を整列対象から外す操作を繰り返す選択ソートです。手順(3)は「整列対象に要素が1個以上残っていれば」実行するため、整列対象が1個のときも(1)〜(3)を実行します。要素数が4個なので、(1)〜(3)の一連の手順は4回実行されます。
テクノロジ系 > 基礎理論 > アルゴリズムとプログラミング
2回目終了時点では整列対象が2個残っており、手順(3)の条件(1個以上)を満たすため、まだ終了しません。
3回目終了時点では整列対象が1個残っています。手順(3)は「1個以上」で繰り返すため、もう1回実行が必要です。
4回目で整列対象が0個になり、手順(3)の条件を満たさなくなるため終了します。
4回目で終了するため、5回目は実行されません。