令和8年度 問67
選択ソートの途中経過
出典: 令和8年度 ITパスポート試験 公開問題 問67 (IPA)
手続 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 の全ての要素 を先頭から順にコンマ区切りで出力する- ア 1,2,3,4,5
- イ 1,2,3,5,4
- ウ 4,5,3,2,1
- エ 5,4,3,2,1
正解と解説を見る
正解: イ
- ア: 1,2,3,4,5 は、並べ替えが終わった後の結果です。j = 3 の時点では、4 番目と 5 番目がまだ入れ替わっていません。
- イ: j = 3 の出力は 1,2,3,5,4 です。正しい答えです。
- ウ: 4,5,3,2,1 は、この手続の途中経過としては現れません。
- エ: 5,4,3,2,1 は、この手続の途中経過としては現れません。
ポイント
この手続は選択ソートです。j 番目以降で一番小さい値を探して、j 番目と入れ替えます。配列は {3, 5, 1, 2, 4} です。
| j | 最小値の位置 | 入れ替え後の workArray |
|---|---|---|
| 1 | 3 番目 (値 1) | 1, 5, 3, 2, 4 |
| 2 | 4 番目 (値 2) | 1, 2, 3, 5, 4 |
| 3 | 3 番目 (値 3) | 1, 2, 3, 5, 4 |
j = 3 のときは、3 番目以降 (3, 5, 4) の最小値が 3 番目自身なので、入れ替えても変わりません。出力は 1,2,3,5,4 です。
この問題の用語: 選択ソート
広告
「アルゴリズムとプログラミング」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)
広告