アルゴリズムとプログラミング|令和7年度 ITパスポート試験 問98
4個の要素から成るデータの並びを,次の手順を繰り返して昇順に整列するとき,整列が終了するまでに(1)から(3)の一連の手順は,何回実行されるか。ここで,最初はデータの並び全体を整列対象とする。
データの並び:[27, 42, 33, 12]
〔手順〕
- (1)整列対象中の要素の最大の値を選び,最後の要素と入れ替える。
- (2)最後の要素を整列対象から外す。
- (3)整列対象に要素が1個以上残っていれば,(1)から(3)の一連の手順を実行する。残っていなければ,整列完了なので終了する。
- 2
- 3
- ✓ これが正解4
- 5
解説
残りが一個でももう一度回るので、繰り返しは四回になります。
手順は、対象の中の最大を最後と入れ替え、その最後を対象から外し、一個以上残っていればもう一度やり直す、というものです。一回目は四個が対象で、最大の四十二を最後へ送り、外します。二回目は三個が対象で、最大の三十三を最後へ送り、外します。三回目は二個が対象で、最大の二十七を最後へ送り、外します。ここで残りは一個ですが、一個以上残っていればという条件に当たるので、もう一度実行します。四回目でその一個を外し、残りが零になって終わります。よって四回です。このアルゴリズムでは、対象が空になるまで回り続けます。終わりを決める分岐の言葉づかいが答えを左右します。
ほかの選択肢はなぜ違うのか
- 二回としています。入れ替えが実際に意味をもった回数を数えたのかもしれませんが、問われているのは一連の手順を何回実行したかです。数える対象が違っています。入れ替えが起きない回も、実行された回として数えます。
- 三回としています。残りが一個になった時点で終わりだと読むとこの数になります。条件は一個以上残っていればなので、一個でももう一度実行されます。ここが最大の落とし穴です。
- 五回としています。残りが零になったあとにもう一度回ると読んだ形です。零個のときは一個以上という条件に当たらないので、そこで終わります。一回多く数えた形で、終わりの条件の読み過ぎです。
この問題に関係する言葉
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。書き表したプログラムと違い、それ自体は著作権で守られません。
- 分岐
出典:令和7年度 ITパスポート試験 問98(改変:原典の図表をテキストに書き起こした)
同じ単元をまとめて解くならアルゴリズムとプログラミングへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)