昇順に整列された配列 D[0]〜D[10] = [3, 9, 14, 21, 27, 33, 40, 46, 52, 61, 75] から、2分探索で値46を探す。left=0, right=10 から始め、mid = ⌊(left + right)/2⌋ の要素と比較し、D[mid] が46より小さければ left = mid + 1、大きければ right = mid − 1 とする。比較される要素の値を順に並べたものはどれか。
選択肢をタップすると、その場で答え合わせできます
正解と解説を見る
正解 A33, 52, 40, 46
解説
正解は「33, 52, 40, 46」です。2分探索では、探索範囲の中央の要素と比較し、目的の値より小さければ右半分、大きければ左半分に範囲を絞ります。最初は mid=5 の33と比較し、46より小さいので left=6 とします。次に mid=8 の52と比較し、46より大きいので right=7 とします。続いて mid=6 の40と比較して left=7 とし、最後に mid=7 の46と比較して見つかります。「33, 52, 46」は、範囲6〜7の中央を切り上げで求めた場合の順序で、問題の切り捨ての規則と異なります。「27, 46」と「33, 40, 46」は、範囲の絞り込み方が規則どおりになっていません。
- #2分探索
この調子でデータ構造とアルゴリズムを続けて解く
▶ この科目の連続演習へ進む(10問)