第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パス目の最後の比較・交換作業は省略することができます。


BohYoh.comトップページへ