ITパスポート|アルゴリズムとプログラミング 問5
手続 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 の全ての要素 を先頭から順にコンマ区切りで出力する正解:イ
解説
このプログラムは、j 番目以降で一番小さい値を探して j 番目と入れ替える「選択ソート」です。j ごとに配列の変化を追います。
- 開始
- {3, 5, 1, 2, 4}
- j = 1
- 1〜5番目の最小値は 1(3番目)。1番目と入れ替えて {1, 5, 3, 2, 4}
- j = 2
- 2〜5番目の最小値は 2(4番目)。2番目と入れ替えて {1, 2, 3, 5, 4}
- j = 3
- 3〜5番目の最小値は 3(3番目)。自分自身と入れ替えるので変化なし。{1, 2, 3, 5, 4} を出力
- ア j = 4 の処理が終わった後(最終結果)の出力です。
- イ 正解。j = 3 と出力された直後の workArray は 1,2,3,5,4 です。
出典:令和8年度 ITパスポート試験 公開問題 問67(読点「,」を「、」に改変)