ITパスポート|アルゴリズムとプログラミング 問4
手続 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 の全ての要素 を先頭から順にコンマ区切りで出力する正解:ア
解説
隣り合う二つの要素を比べて、左の方が大きければ入れ替える、という操作を繰り返しています。これは、小さい順(昇順)に並べ替えるバブルソートです。
- n = 1(m は 1 〜 3)
- {2, 4, 1, 3} → 2 と 4 はそのまま → 4 と 1 を入れ替えて {2, 1, 4, 3} → 4 と 3 を入れ替えて {2, 1, 3, 4}
- n = 2(m は 1 〜 2)
- 2 と 1 を入れ替えて {1, 2, 3, 4} → 2 と 3 はそのまま
- n = 3(m は 1)
- 1 と 2 はそのまま。結果は {1, 2, 3, 4}
- ア 正解。小さい順に並べ替えられて、1,2,3,4 が出力されます。
- エ 大きい順(降順)に並べ替えた結果です。条件が“<”であれば、この結果になります。
出典:令和5年度 ITパスポート試験 公開問題 問60(読点「,」を「、」に改変)