戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2014年 秋期 午前(科目A)06


問題文

2分探索に関する記述のうち、適切なものはどれか。

選択肢

2分探索するデータ列は整列されている必要がある。(正解)
2分探索は線形探索よりも常に速く探索できる。
2分探索は探索をデータ列の先頭から開始する。
n個のデータの2分探索に要する比較回数は、に比例する。

🔒 解説は解答すると表示されます

二分探索の前提【午前解説】

正解の理由

「データ列は整列されている必要がある」は正しいです。二分探索(バイナリサーチ)は探索空間を中央で半分に分割してどちら側を探索するかを比較により決めていく手法であり、要素の大小関係が意味を持つため、事前に昇順または降順で整列されていることが必須条件です。整列されていない列に対しては、中央と左右のどちらに目的の値があるか判断できないため、二分探索は成立しません。
また、二分探索の比較回数は に収まります。最大比較回数は厳密には (同値表示で )程度であり、単純に と書くのは誤差を生む場合があります(具体的な上限を出す際は上の正確な式を用います)。

解法ステップ

  1. 二分探索の前提条件(整列の要否)を思い出す。分割して選択するには順序が必要。
  2. 各選択肢の主張がアルゴリズムの性質と符号するかを順に確認する。
    • 探索速度を比較する場合は「常に速い」といえるか(入力の性質や構造によって変わるか)を考える。
    • 探索開始位置や計算量の式が一般的な二分探索の定義と合っているかを検証する。
  3. 正しいものを1つ選ぶ(ここでは前提条件が満たされるものが該当)。

選択肢別の誤答解説

  • : 正。二分探索は要素が整列されている(昇順または降順)ことが前提条件であるため、これが満たされないと適用できません。
  • イ: 誤。二分探索は平均・最悪で の時間だが、線形探索()より「常に速い」とは言えない場面がある。例えばデータが整列されていない場合は二分探索自体が使えない。データ構造や定数係数によって小さい n では線形探索の方が速いこともある。
  • ウ: 誤。二分探索はデータ列の先頭から順に比較していく線形探索とは異なり、中央(あるいは区間の中点)から比較を始め、探索区間を半分に狭めていく手法です。
  • エ: 誤。比較回数や時間計算量は ではなく は典型的にはソートアルゴリズム(例: マージソート、ヒープソート)の時間計算量です。

よくある誤解

  • 「二分探索は配列でしか使えない」:ランダムアクセス可能な配列で最も効率的ですが、順次アクセスしかできない連結リストでは位置計算(中央へのアクセス)に追加コストがかかるため実用的でないことがあります。二分探索そのものは「整列された順序付き集合」に対して成立します。
  • 「二分探索は必ず線形探索より速い」:小さい n や実装やメモリ局所性の違いで逆になることがあるため、常にという表現は誤りです。
  • 「比較回数は正確に だ」:正確な最悪比較回数は (=)です。丸め方の扱いに注意してください。

補足コラム

  • 最大比較回数の直感的導出:区間の長さを半分にしていくので、k 回の比較で候補は最大で 個になる。これが 1 以下になる最小の k を求めると、 となり、。従って整数回数としては (同値に )が上限になります。
  • 二分探索の派生:lower_bound(最初の >= を返す)、upper_bound(最初の > を返す)などは重複要素の取り扱いで便利です。また、降順に整列されている場合は比較の向きを反転すれば同様に使えます。
  • 実装上の注意:終端条件や区間の更新(閉区間 vs 半開区間)の扱いを誤ると無限ループやオフバイワンが発生しやすいです。テストケースに n=0, n=1, 四則境界値を含めて検証してください。
コード例(Python、典型的な反復二分探索)
def binary_search(a, target):
    lo, hi = 0, len(a) - 1  # 閉区間 [lo, hi]
    while lo <= hi:
        mid = (lo + hi) // 2
        if a[mid] == target:
            return mid
        elif a[mid] < target:
            lo = mid + 1
        else:
            hi = mid - 1
    return -1  # 見つからない

FAQ

Q: 整列が昇順でなく降順の場合は使えますか?
A: 使えますが比較の不等号を反転するなどアルゴリズムの比較方向を適切に変更する必要があります。
Q: 二分探索の平均比較回数は?
A: 平均的にも で、最悪比較回数と同じオーダーです。定数係数は実装によって変わります。
Q: 二分探索木(BST)と配列上の二分探索は同じですか?
A: 概念的に「二分で分割して探索する」という点で共通しますが、BST は動的挿入・削除に適した木構造であり、その高さ(最悪ケースは O(n))に依存します。平衡二分探索木(AVL木、赤黒木)なら高さは になります。

関連キーワード: 二分探索、バイナリサーチ、探索アルゴリズム、時間計算量、最大比較回数、対数時間
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について