過去問ドリル

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

テクノロジ/アルゴリズム

手続 sort は,要素数が2以上の整数型の配列を引数 numberArray で受け取り,その要素を昇順に並べ替えた結果を出力する。手続 sort の動作確認のために,処理の途中で j の値と workArray の全ての要素を出力する。配列 numberArray を{3, 5, 1, 2, 4}とし,手続 sort を sort(numberArray)として呼び出したとき,j の値が3と出力された直後の workArray の全ての要素の出力はどれか。ここで,配列の要素番号は1から始まる。 〔プログラム〕 ○sort(整数型の配列: numberArray)  整数型: minIndex, j, k  整数型の配列: workArray ← numberArray // 配列の複製を作る  for (j を 1 から (workArray の要素数 - 1) まで 1 ずつ増やす)   // j 番目から末尾までの中で最も小さい値をもつ要素の要素番号を   // 一つ求める   minIndex ← j   for (k を (j + 1) から workArray の要素数 まで 1 ずつ増やす)    if (workArray[k] が workArray[minIndex] より小さい)     minIndex ← k    endif   endfor   workArray[j] と workArray[minIndex] の値を入れ替える   // 動作確認のために,j の値と workArray の全ての要素を出力する   j の値を出力する   workArray の全ての要素 を先頭から順にコンマ区切りで出力する  endfor  workArray の全ての要素 を先頭から順にコンマ区切りで出力する

出典:令和8年度 ITパスポート試験 問67

正解:イ

解説

このプログラムは選択ソートです。j 番目から末尾までで最小の値を探し,j 番目と入れ替えます。初期状態 {3, 5, 1, 2, 4} で順に追うと,j=1 では最小の 1(3番目)と1番目を入れ替えて {1, 5, 3, 2, 4},j=2 では 5,3,2,4 の最小の 2(4番目)と2番目を入れ替えて {1, 2, 3, 5, 4},j=3 では 3,5,4 の最小が 3 番目の 3 自身なので入替えが起きず {1, 2, 3, 5, 4} のままです。j の値 3 を出力した直後の出力は 1,2,3,5,4 です。

選択肢ごとの解説

  • ア誤り。1,2,3,4,5 は,j=4 の処理で5番目の 4 と入れ替えた後の完成形で,j=3 の直後ではありません。
  • イ正しい。j=3 の時点の workArray は {1, 2, 3, 5, 4} なので,1,2,3,5,4 と出力されます。
  • ウ誤り。このプログラムは昇順に並べ替えるため,降順の並びにはなりません。
  • エ誤り。降順の並びで,昇順に並べ替えるこのプログラムの途中経過としてあり得ません。
ITパスポートの過去問を演習モードで解く