#17

二分探索(バイナリサーチ)

並べ替え済みデータで、探す範囲を半分ずつ絞り込む高速な探索です。

解説

二分探索は、昇順に並んだデータに使える高速な探索法です。辞書を真ん中あたりから開いて、目的の単語が前か後ろかで探す範囲を一気に狭めるのと同じ考え方です。 手順は次の通りです。 1. 探索範囲の左端 low と右端 high を決める。 2. 中央 mid の値を見る。 3. 一致すれば終了。中央より大きければ右半分、小さければ左半分に絞る。 1回の比較で候補が約半分になるため、比較回数は約 log2(n) 回。100個でも約7回で済みます。

書き方

二分探索(昇順データ前提): 範囲を半分ずつ絞る。
・low / high で範囲、mid = (low + high) // 2。
・data[mid] < target なら low = mid + 1、大きければ high = mid - 1。
・約 log2(n) 回(O(log n))。

書いて動かす

この回の課題

ソート済みリストで、中央と比較→範囲を半分に絞る二分探索を実装し、見つけた位置を表示してみよう。

コードはあなたの端末の中だけで動きます(サーバーには送られません)。進み具合もこのブラウザに保存されます。

もっと本格的に使うなら

Windows版 InsightPy なら、書いたコードを保存して業務の自動化まで進められます。学習センターはずっと無料です。