アルゴリズムとプログラミング

基本情報技術者試験 科目A免除 修了試験 20120722 実施分 問6

配列A[i](i=1,2,…,n)を,次のアルゴリズムによって整列する。行2〜3の処理が初めて終了したとき,必ず実現されている配列の状態はどれか。 〔アルゴリズム〕 行番号 1 iを1からn−1まで1ずつ増やしながら行2〜3を繰り返す 2  jをnからi+1まで1ずつ減らしながら行3を繰り返す 3   もしA[j]<A[j−1]ならば,A[j]とA[j−1]を交換する
擬似コード(行番号1〜3)は stem に記載。 1 iを1からn−1まで1ずつ増やしながら行2〜3を繰り返す 2 jをnからi+1まで1ずつ減らしながら行3を繰り返す 3 もしA[j]<A[j−1]ならば,A[j]とA[j−1]を交換する
  • ア A[1]が最小値になる。
  • イ A[1]が最大値になる。
  • ウ A[n]が最小値になる。
  • エ A[n]が最大値になる。

出典:基本情報技術者試験 科目A免除 修了試験 20120722 実施分 問6

答えと解説を見る

正解:ア

覚える知識

バブルソートの1パス後の状態

後ろから隣接要素を比較交換するバブルソートでは、1パスごとに最小値が先頭へ確定する。

この問題で必要なこと

jをnから下方へ隣接比較・交換するため、1回目の外側ループ終了で最小値が先頭A[1]に移動する(バブルソート)。

ひっかけ

走査方向を逆に読み、最大値が末尾に来ると誤解させる。

この知識の出題:本試験系 0 回・免除試験 3 回(公開問題での観測値)

この知識をアプリで解いて覚える レッスン「整列(ソート)アルゴリズムの比較」で学ぶ

同じ知識の過去問