第2種情報処理技術者試験 2000年度 = 平成12年度・秋期 午前 問15

 データ列の隣り合う要素の値を比較し、小さいほうが右にあれば交換する。この操作をデータ列の左端から右端まで繰り返す処理を1回のパスとする。
 次のデータ列でパスを2回繰り返した後のデータ列の内容を示しているものはどれか。

┌─┬─┬─┬─┬─┬─┐ │5│4│1│3│6│2│ └─┴─┴─┴─┴─┴─┘

   ┌─┬─┬─┬─┬─┬─┐  ア │1│3│2│4│5│6│    └─┴─┴─┴─┴─┴─┘

   ┌─┬─┬─┬─┬─┬─┐  イ │1│3│4│2│5│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トップページへ