令和5年度 問60 バブルソートによる配列の並べ替え

問題

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

配列の隣接要素を比較・交換して出力するprintArray
コードをテキストで確認
○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,4,1,3}です。

1周目:4と1を交換して{2,1,4,3}、次に4と3を交換して{2,1,3,4}。

2周目:2と1を交換して{1,2,3,4}。

それ以降は交換しません。

正解:ア

1, 2, 3, 4です。

バブルソート:交換した状態を引き継ぐ
バブルソート:交換した状態を引き継ぐ

同じ分野の問題

編集・確認:kakoloop · 編集方針

公開日:

内容更新:

問題・解説の誤りを報告する

画像を拡大表示