スポンサーリンク

問題の解答・解説ページ

このページは解説の閲覧モードです。
実力試しをしたい方は、下のボタンからクイズに挑戦してください!

この問題をクイズ形式で解く
問題 No.1951
ECサイトの顧客データベースにおいて、会員IDの昇順に並んだ100万件の会員データの中から特定の会員情報を高速に見つけ出すため、中央のデータと目的のIDを比較して探索範囲を半分ずつ狭めていくアルゴリズムを採用した。このアルゴリズムの動作特性として、最も適切なものはどれか。

【正解の解説】

データ数が倍に増加しても、最大探索回数がわずか1回しか増加しない効率的な特性を持っている。

これは、1から100までの数字当てゲームで「50より大きい?」「75より小さい?」と質問を繰り返してわずか7回以内で正解にたどり着く感覚と同じです。辞書で特定の単語を探すときにページを半分ずつ開いていく動きをイメージしてください。データ数が倍になっても、必要な質問の回数はたった1回増えるだけという驚異的なスピードを誇り、大規模なデータベースの検索では欠かせない強力なアルゴリズムです。

スポンサーリンク

【その他の選択肢の解説】

データ数が倍に増加すると、最大探索回数も比例してちょうど倍に増加する直線的な特性を持っている。

初学者が最も混同しやすいのが、すべてのデータを順番になめる線形探索との違いです。100万件のデータがある場合、先頭から探す方式だと最大100万回かかりますが、二分探索ならわずか20回程度で発見できます。「データ数に比例して回数が増える」という思い込みは、すべてをしらみつぶしに探す非効率なイメージを引きずっていることが原因なので、半分ずつに絞るというダイナミックな仕組みをしっかり区別して覚えましょう。

データ数が倍に増加しても、最大探索回数は一切変わらず一定の回数で常に完了する特性を持っている。

「データが増えても一瞬で終わるなら常に一定のはずだ」と勘違いしがちですが、それはキー値を直接保存場所へ変換するハッシュ探索などの世界です。二分探索はあくまで「範囲を半分に狭めていく」プロセスを踏むため、データ数が増えればそれに応じて探索回数もわずかですが確実に増加します。ただし、その増え方が「1回ずつ」と極めて緩やかである点が二分探索の最大のメリットです。

データ数が倍に増加すると、最大探索回数が二乗に比例して急激に増加する非効率な特性を持っている。

「データがたくさん増えると処理がものすごく重くなるはずだ」という漠然としたイメージに引っ張られると、この選択肢を選んでしまいます。バブルソートなどの一部の非効率な並べ替えアルゴリズムでは二乗に比例するものもありますが、今回の二分探索は「対数時間(log n)」という極めて緩やかな増加カーブを描きます。難しそうに聞こえますが、指数関数的な爆発的増加とは真逆の、非常に賢い省エネ探索であることを押さえておきましょう。