令和5年度 ITパスポート 問60 解説
手続printArrayは,配列integerArrayの要素を並べ替えて出力する。手続printArrayを呼び出したときの出力はどれか。ここで,配列の要素番号は1から始まる。
〔プログラム〕
○printArray()
整数型: n, m
整数型の配列: integerArray ← {2, 4, 1, 3}
for (n を 1 から (integerArrayの要素数 - 1) まで 1 ずつ増やす)
for (m を 1 から (integerArrayの要素数 - n) まで 1 ずつ増やす)
if (integerArray[m] > integerArray[m + 1])
integerArray[m] と integerArray[m + 1] の値を入れ替える
endif
endfor
endfor
integerArrayの全ての要素を先頭から順にコンマ区切りで出力する
- ア1,2,3,4
- イ1,3,2,4
- ウ3,1,4,2
- エ4,3,2,1
答えを見る
正解 ア1,2,3,4
要点隣同士を比べて大小を入れ替えるバブルソートで昇順に並ぶ
解説
このプログラムは隣り合う要素を比べ、左が大きければ入れ替えるバブルソートで、結果は昇順の1,2,3,4になりアが正解です。
- n=1:{2,4,1,3} → 4と1を交換 {2,1,4,3} → 4と3を交換 {2,1,3,4}
- n=2:2と1を交換 {1,2,3,4}(2と3はそのまま)
- n=3:1と2はそのまま {1,2,3,4}
- イ、ウ、エ:いずれも昇順になっていないので誤り。