第2種情報処理技術者試験 |
1995年度 = 平成7年度・秋期 |
午前 |
問12 |
データ列の隣り合う要素の値を比較し、小さいほうが右にあれば交換する。この操作をデータ列の左から末尾まで繰り返すのを1回のパスとする。
次のデータ列で2回パスを繰り返したときのデータ列の内容を示しているものはどれか。
┌─┬─┬─┬─┬─┬─┐
│5│4│1│3│6│2│
└─┴─┴─┴─┴─┴─┘
┌─┬─┬─┬─┬─┬─┐
ア │1│3│2│4│5│6│
└─┴─┴─┴─┴─┴─┘
| ┌─┬─┬─┬─┬─┬─┐
イ │1│3│4│2│5│6│
└─┴─┴─┴─┴─┴─┘
|
┌─┬─┬─┬─┬─┬─┐
ウ │1│4│5│3│2│6│
└─┴─┴─┴─┴─┴─┘
| ┌─┬─┬─┬─┬─┬─┐
エ │4│1│5│3│2│6│
└─┴─┴─┴─┴─┴─┘
|
┌─┬─┬─┬─┬─┬─┐
オ │4│1│5│3│6│2│
└─┴─┴─┴─┴─┴─┘
|
イ
バブルソートでは、隣り合うデータを比較し、必要であれば交換を行うという一連の操作(パス)をn - 1回行います。
この問題では、整列の作業を最後まで行わずに、2パスだけ行った時点でのデータの並びがどうなるかを問う問題です。
1パス目
┌─┬─┬─┬─┬─┬─┐
│5│4│1│3│6│2│ 最初の状態
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換
┌─┬─┬─┬─┬─┬─┐
│4│5│1│3│6│2│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換
┌─┬─┬─┬─┬─┬─┐
│4│1│5│3│6│2│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換
┌─┬─┬─┬─┬─┬─┐
│4│1│3│5│6│2│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換の必要なし
┌─┬─┬─┬─┬─┬─┐
│4│1│3│5│6│2│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換
┌─┬─┬─┬─┬─┬─┐
│4│1│3│5│2│6│
└─┴─┴─┴─┴─┴─┘
2パス目
┌─┬─┬─┬─┬─┬─┐
│4│1│3│5│2│6│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換
┌─┬─┬─┬─┬─┬─┐
│1│4│3│5│2│6│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換
┌─┬─┬─┬─┬─┬─┐
│1│3│4│5│2│6│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換の必要なし
┌─┬─┬─┬─┬─┬─┐
│1│3│4│5│2│6│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換
┌─┬─┬─┬─┬─┬─┐
│1│3│4│2│5│6│
└─┴─┴─┴─┴─┴─┘
└─┘
↓ 比較・交換の必要なし
┌─┬─┬─┬─┬─┬─┐
│1│3│4│2│5│6│
└─┴─┴─┴─┴─┴─┘
※1パスが終了した時点で、最も大きい値が配列の最後に位置しますから、2パス目の最後の比較・交換作業は省略することができます。