広告スペース(バナー)
🐘PHP レッスン
基本文法の基礎8
データ構造とオブジェクト指向7
構文の基本を深める9
関数とデータ構造の応用9
アルゴリズムとテストの基礎8
文字列・数値操作の応用8
実務で役立つ機能8
アルゴリズム練習問題10
レッスン 33 / 68

二分探索(バイナリサーチ)のアルゴリズム

このレッスンでは、二分探索というアルゴリズムを学び、並び替え済みのデータから効率よく目的の値を見つける方法を理解することを目標にします。「PHP 二分探索 実装」で調べている方向けの内容です。

二分探索は、並び替え済みのデータから目的の値を効率よく探すアルゴリズムです。「辞書を開くとき、真ん中あたりから探して範囲を半分に絞っていく」ようなイメージです。先頭から1つずつ調べる方法に比べて、データ量が多いほど圧倒的に速く目的の値を見つけられます。

サンプルコードでは、$low$highという2つの添字で探索範囲を管理し、intdiv($low + $high, 2)で真ん中の位置を計算しています。intdiv()はPHPにおける整数の割り算専用の関数で、割り算の結果を整数に切り捨てて計算します。

初心者がよくつまずくのが、対象のデータがあらかじめ並び替えられている必要があるという前提条件です。並び替えられていない配列に対して二分探索を使っても正しい結果は得られません。事前のソートを忘れないようにしましょう。

データ構造とアルゴリズムの基礎として、就職試験のコーディングテストなどでもよく出題される定番の題材です。データ量が多いシステムでは、二分探索の高速さが特に大きな効果を発揮します。

📖 お手本コード
✍️ あなたのコード
コードを書いたら「実行する」を押してください

🧪 このサイトではPHPを直接コンパイル・実行できないため、お手本コードと同じ内容を入力できたかをその場で判定します(採点はブラウザ内だけで行われ、どこにも送信されません)。

🎯
ここまでできればゴール達成!
大量のデータの中から目的の値を高速に見つけ出せるようになります。
広告スペース(バナー)
広告スペース(記事内)