← クエスト一覧

クエスト81:二分探索を実装しよう

スライド 1 / 6
コーデ
💻 コード例
実行結果
← クエスト一覧
🐍 Python / Quest 81 / 85

クエスト81:二分探索を実装しよう

発展 +10 XP
🏠
今回の課題
binary_search(arr, target) を自分で実装しよう(見つかればインデックス、無ければ -1 を返す)。複数のケースで自動テストされ、全部通れば合格!
📖 解説を見る
🔍 二分探索って何?

並べ替え済みのリストを、真ん中と比べて「探す範囲を半分に絞る」ことをくり返す、高速な検索方法です。

✏️ 考え方:
真ん中の値 == 目標 → 見つかった
真ん中の値 < 目標 → 右半分を探す(left = mid + 1
真ん中の値 > 目標 → 左半分を探す(right = mid - 1

💡 どこで使う?

大量のデータから目的の値を探すとき、先頭から順に見る(O(n))より圧倒的に速く(O(log n))見つけられます。100万件でも約20回で探せます。並べ替え済みデータの検索や範囲検索で使われる、効率を学ぶ王道アルゴリズムです。

⚠️ ポイント:
mid = (left + right) // 2 が真ん中の位置
・毎回、探す範囲(left〜right)が半分になる
・リストが並べ替え済みであることが前提
ヒントを見る
真ん中の値が目標より小さいときは、左端を mid + 1 に動かして右半分を探そう!
期待する出力
すべてのテストに合格!
📄 見本
「答えを見る」を押すと、お手本のコードが出ます。クリックでコピーできます。
💻 コードエディタ
実行すると結果がここに表示されます
正解!見本と同じになりました。
次へ →
🏠 ホームへ

れんしゅうもんだい

☑ 0 / 3 正解 レッスンに戻る

全問正解でクエストクリア!

未挑戦

問題 1: binary_search で [2, 4, 6, 8, 10] から 8 を探してインデックスを表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
3
未挑戦

問題 2: binary_search で [1, 2, 3, 4, 5] から 6 を探して -1 が返ることを確認して表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
-1
未挑戦

問題 3: bisect モジュールを使って [1, 3, 5, 7, 9] に 5 を挿入する位置を表示しよう!

実行結果
実行できたよ!
もう一度チャレンジ!
📄 見本の出力
2
コピーしました!