ITパスポート 令和8年度67

問題

テクノロジ系

問67 手続 sort は,要素数が2以上の整数型の配列を引数 numberArray で受け取り,その要素を昇順に並べ替えた結果を出力する。手続 sort の動作確認のために,処理の途中で j の値と workArray の全ての要素を出力する。配列 numberArray を{3, 5, 1, 2, 4}とし,手続 sort を sort(numberArray)として呼び出したとき,j の値が3と出力された直後の workArray の全ての要素の出力はどれか。ここで,配列の要素番号は1から始まる。

選択肢

  • 1, 2, 3, 4, 5
  • 1, 2, 3, 5, 4
  • 4, 5, 3, 2, 1
  • 5, 4, 3, 2, 1

解説

正解:

概要

この問題は,擬似言語で記述された選択ソートのプログラムの動作を問うものです。配列の並べ替え処理を手順ごとにトレースする力が問われます。

正解の理由

選択ソートでは,外側のループの繰り返し変数jの値が示す位置に,残りの要素の中の最小値を選んで移動させます。

・j=1のとき: 全体の最小値1を先頭(1番目)に移動 → {1, 5, 3, 2, 4}

・j=2のとき: 残り(2〜5番目)の最小値2を2番目に移動 → {1, 2, 3, 5, 4}

・j=3のとき: 残り(3〜5番目)の最小値3を3番目に移動 → {1, 2, 3, 5, 4}

j=3の直後のworkArrayは{1, 2, 3, 5, 4}となります。イが正解です。

各選択肢の解説

ア(×): 1, 2, 3, 4, 5はソート完了後の状態であり,j=3の直後ではありません。

イ(〇): j=3の直後の状態は1, 2, 3, 5, 4です。3番目まで確定し,4番目と5番目がまだ入れ替わっていません。

ウ(×): 降順の途中の状態であり,このアルゴリズムは昇順ソートです。

エ(×): 逆順の配列であり,選択ソートの中間状態ではありません。

ポイント

選択ソートはj=kのときk番目に確定された最小値が入り,k+1番目以降の要素はまだ並べ替えが完了していません。j=3の直後は3番目(値3)まで確定しており,4番目以降は元の順序(5, 4)のままであることがポイントです。