過去問解きまくり研究所 ホーム

平成23年度 秋期 午前 問8

基礎理論

流れ図のaに入るもの

データが昇順にソートされた配列 X[i](i=0, 1,…, n-1)を 2 分探索する。流れ図の a に入るものとして,適切なものはどれか。ここで,流れ図の中の割り算は小数点以下を切り捨てるものとする。

〔流れ図〕
   開始
     ↓
   in に探索値を入力
     ↓
   sch  ← -1
   left ← 0
   right ← n-1
     ↓
  ┌─ ループ1: (sch=-1)and([ a ])を満たす間,繰り返す
  │    ↓
  │  center ← (left+right)÷2
  │    ↓
  │  X[center] : in を比べる
  │     < のとき  left ← center+1
  │     = のとき  sch ← center
  │     > のとき  right ← center-1
  └─ ループ1 の終わり
     ↓
   sch を表示
     ↓
   終了
答えと解説を見る

✓ これが正解イleft ≦ right

解説

範囲が一つに縮んだときも調べに行きます。

2分探索の流れ図で、繰り返しを続ける条件の片方を選ぶ設問です。条件は二つを同時に満たす間だけ繰り返す形になっており、前半はまだ見つかっていないことを表しています。ですから空欄が受け持つのは、まだ調べる範囲が残っているという条件です。範囲は左端と右端の二つの変数で表されています。この区間に含まれる要素の個数は、右端から左端を引いて 1 を足した数です。要素が一つでも残っている状態は、この個数が 1 以上のとき、つまり左端が右端以下のときです。分かれ目は等号を含めるかどうかの一点になります。等号を落とすと、範囲が一つに縮んだ時点で繰り返しを抜けてしまい、その一つを調べないまま終わります。探している値がちょうどそこにあった場合、配列の中にあるのに見つけられません。反対に、等号を含めても繰り返しが止まらなくなる心配はありません。比較のたびに左端が中央の次へ進むか、右端が中央の手前へ下がるかのどちらかが必ず起こるので、範囲は毎回一つ以上狭まり、いつか左端が右端を追い越して条件が偽になります。

ほかの選択肢はなぜ違うのか

出典:平成23年度 秋期 応用情報技術者試験 午前 問8

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)