問98の正解: ウテクノロジ系/アルゴリズムとプログラミング
4個の要素から成るデータの並びを、次の手順を繰り返して昇順に整列するとき、整列が終了するまでに(1)から(3)の一連の手順は、何回実行されるか。ここで、最初はデータの並び全体を整列対象とする。 データの並び: [27, 42, 33, 12] [手順] (1) 整列対象中の要素の最大の値を選び、最後の要素と入れ替える。 (2) 最後の要素を整列対象から外す。 (3) 整列対象に要素が1個以上残っていれば、(1)から(3)の一連の手順を実行する。残っていなければ、整列完了なので終了する。
この設問が問うていること
選択ソート(基本選択法)に基づく整列アルゴリズムのループ実行回数をトレースする設問です。
ア2
選択肢アの解説: 途中で処理を終了する判定はないため、2回では終了せず不適切です。
イ3
選択肢イの解説: 3回目の実行が終わった段階でも整列対象に要素が1個(12)残っており、条件「1個以上」を満たすため、ここで終了せず不適切です。
ウ4正解
選択肢ウの解説: 各ループで整列対象の要素数が1ずつ減り(4個→3個→2個→1個→0個)、対象が0個になるまでに一連の手順がちょうど4回実行されるため適切です。
エ5
選択肢エの解説: 4回目の実行後には整列対象の要素数が0個になるため、5回目は実行されず不適切です。
総合解説
手順に従って配列サイズと処理を追跡します。初期状態:整列対象は `[27, 42, 33, 12]`(要素数4)。1回目実行:最大値42と最後尾12を入れ替えて `[27, 12, 33, 42]` になり、42を除外。残りは `[27, 12, 33]`(要素数3 ≧ 1)。2回目実行:最大値33はそのまま位置を維持し、33を除外。残りは `[27, 12]`(要素数2 ≧ 1)。3回目実行:最大値27と最後尾12を入れ替えて `[12, 27]` になり、27を除外。残りは `[12]`(要素数1 ≧ 1)。4回目実行:最大値12の位置を維持し、12を除外。残りは `[]`(要素数0、終了)。したがって、手順は計4回実行され、正解は選択肢cです。
AIAIにその場で質問(デモ応答)
こんな聞き方もできます(タップで質問)