隣接要素の比較と交換を繰り返す処理(バブルソート)から出力を求める

正解は ア (1,2,3,4)です。 このプログラムは バブルソート です。内側のループで隣り合う要素 integerArray[m] と integerArray[m+1] を比べ、左が大きければ入れ替えます。外側のループが1周するごとに、残りの中で最大の値が右端に確定します。 n=1(m は1〜3):4 が右へ移動し、末尾に 4 が確定します。→ {2,1,3,4} n=2(m は1〜2):先頭の 2 と 1 が入れ替わります。→ {1,2,3,4} n=3(m は1だけ):1>2 ではないので交換なし。→ {1,2,3,4} 比較条件は「左>右のとき交換」なので、最終的に 昇順 に並びます。出力は 1,2,3,4 です。 1,3,2,4 は昇順になっておらず、全てのループを終えた後の並びではありません。 3,1,4,2 はどの時点の並びにも現れません。 4,3,2,1 は降順です。条件が「左>右のとき交換」なので降順にはなりません。

手続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 の全ての要素を先頭から順にコンマ区切りで出力する

出典令和5年度 ITパスポート試験 公開問題 問60
ア
1,2,3,4
イ
1,3,2,4
ウ
3,1,4,2
エ
4,3,2,1