令和8年度 ITパスポート 問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
答えを見る
正解 イ1,2,3,5,4
要点選択ソートは未整列部分の最小値を先頭と交換していく
解説
このプログラムは選択ソートで、j番目以降の最小値をj番目と入れ替えます。{3,5,1,2,4}で追跡します。
- j=1:3,5,1,2,4 の最小値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の後の出力なので誤り。
- ウ、エは降順に近い並びで、昇順に並べ替える処理では現れないので誤り。