基本情報技術者試験 2007年度 = 平成19年度・春期 午前 問14

 配列A[i ](i =1,2,...,n )を、次のアルゴリズムによって整列する。行2~3の処理が初めて終了したとき、必ず実現されている配列の状態はどれか。

〔アルゴリズム〕
 行番号
i を1からn -1まで1ずつ増やしながら行2~3を繰り返す
  j n からi +1まで1ずつ減らしながら行3を繰り返す
   もしA[j ]<A[j -1]ならば、A[j ]とA[j -1]を交換する

ア A[1]が最小値になる。 イ A[1]が最大値になる。
ウ A[n]が最小値になる。 エ A[n]が最大値になる。

解答



解説

 本問で問われているアルゴリズムはバブルソートです。このアルゴリズムでは、隣り合うデータを比較し、必要であれば交換を行うという一連の操作(パス)をn -1回行います。
 整列の作業を最後まで行わずに、1パスだけ行った時点でのデータの並びがどうなるかが問われています。n が6である場合を、以下に示します。

1パス目 ┌─┬─┬─┬─┬─┬─┐ │5│4│1│3│6│2│ 最初の状態 └─┴─┴─┴─┴─┴─┘ └─┘ ↓ 比較して交換。 ┌─┬─┬─┬─┬─┬─┐ │4│5│1│3│2│6│ └─┴─┴─┴─┴─┴─┘ └─┘ ↓ 比較して交換。 ┌─┬─┬─┬─┬─┬─┐ │4│1│5│3│2│6│ └─┴─┴─┴─┴─┴─┘ └─┘ ↓ 比較して交換。 ┌─┬─┬─┬─┬─┬─┐ │4│1│3│5│2│6│ └─┴─┴─┴─┴─┴─┘ └─┘ ↓ 比較するが交換はしない。 ┌─┬─┬─┬─┬─┬─┐ │4│1│3│5│2│6│ └─┴─┴─┴─┴─┴─┘ └─┘ ↓ 比較して交換。 ┌─┬─┬─┬─┬─┬─┐ │1│4│3│5│2│6│ └─┴─┴─┴─┴─┴─┘

※1パスが終了した時点で、最小値が配列の先頭A[1]に位置します。


BohYoh.comトップページへ