令和5年度 問60
バブルソートの出力
出典: 令和5年度 ITパスポート試験 公開問題 問60 (IPA)
手続 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 です。正しい答えです。
- イ: 2 と 3 が入れ替わっていません。n = 2 の 2 周目で正しい順になります。
- ウ: 並べ替え前の配列とは異なります。この手続きは小さい順に並べ替えます。
- エ: 大きい順の並びです。この手続きでは、左が大きいときに入れ替えるので、小さい順になります。
ポイント
隣り合う要素を比べて、左が大きければ入れ替える処理を繰り返すバブルソート (小さい順に並べる) です。
配列は {2, 4, 1, 3} です。
- n = 1 (m = 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 です。
広告
「アルゴリズムとプログラミング」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)
広告