7-2 擬似言語

令和5年度公開問題  問60

手続 printArray は,配列 integerArray の要素を並べ替えて出力する。手続 printArray を呼び出したときの出力はどれか。ここで,配列の要素番号は1から始まる。

解答 ア

基本交換法(バブルソート)の問題。
基本交換法は,隣り合う要素を比較し,逆順であれば交換する。整列アルゴリズムの一つ。

二重の繰返しの問題。
時点のn,m,m + 1の値は次のとおり。
繰返し n m m+1
1回目 1 1 2
2回目 1 2 3
3回目 1 3 4
4回目 2 1 2
5回目 2 2 3
6回目 3 1 2

配列 integerArrayのm番目と(m+1)番目を比較して,(m+1)番目の方が小さければ,m番目と(m+1)番目を入れ替える。

繰返し ソート前 ソート後
1回目 2, 4, 1, 3 2, 4, 1, 3
2回目 2, 4, 1, 3 2, 1, 4, 3
3回目 2, 1, 4, 3 2, 1, 3, 4
4回目 2, 1, 3, 4 1, 2, 3, 4
5回目 1, 2, 3, 4 1, 2, 3, 4
6回目 1, 2, 3, 4 1, 2, 3, 4

よって,ア。