PHPを使用して二分探索アルゴリズムを実装する方法

PHPz
リリース: 2023-07-07 13:58:02
オリジナル
1142 人が閲覧しました

PHP を使用してバイナリ検索アルゴリズムを実装する方法

バイナリ検索アルゴリズムは、順序付けられた配列内の指定された要素を見つけるのに適した効率的な検索アルゴリズムです。この記事では、PHP 言語を使用して二分探索アルゴリズムを実装する方法を紹介し、コード例を添付します。

二分探索アルゴリズムの考え方は、配列を 2 つの部分に分割し、ターゲット値と中央の要素の大小関係を比較することで、ターゲット値がどちらの部分にあるかを判断することです。中央の要素がターゲット値と等しい場合、検索は成功します。そうでない場合は、中央の要素とターゲット値の大小関係に基づいて、ターゲット値が見つかるまで、またはターゲット値が一致すると判断されるまで、対応する部分の検索を続けます。目標値が存在しません。

以下は、二分探索アルゴリズムを実装するための PHP のコード例です:

function binary_search($arr, $target) {
    $left = 0;
    $right = count($arr) - 1;
    
    while ($left <= $right) {
        $mid = floor(($left + $right) / 2);
        
        if ($arr[$mid] == $target) {
            return $mid;
        }
        
        if ($arr[$mid] < $target) {
            $left = $mid + 1;
        } else {
            $right = $mid - 1;
        }
    }
    
    // 目标值不存在
    return -1;
}

$arr = [1, 3, 5, 7, 9, 11, 13, 15];
$target = 7;
$result = binary_search($arr, $target);

if ($result == -1) {
    echo "目标值不存在";
} else {
    echo "目标值在数组中的位置是:" . $result;
}
ログイン後にコピー

上記のコードを実行すると、出力は「配列内のターゲット値の位置は: 3」になります。 "、ターゲット値 7 が配列内にあることを示します。 のインデックス位置は 3 です。

上記のコードの binary_search 関数は、検索対象の順序付けされた配列とターゲット値の 2 つのパラメーターを受け取ります。この関数は、2 つのポインター leftright を使用して配列の検索範囲を表します。目的の値が見つかるか、目的の値が存在しないと判断されるまで、while ループで検索範囲を絞り続けます。

コードの重要な点は、$mid 変数を使用して中間要素のインデックス位置を計算し、それをターゲット値と比較することです。それらが等しい場合はインデックス位置が返され、そうでない場合はサイズ関係に従って検索範囲が調整され、次のラウンドの二分探索が継続されます。

バイナリ検索アルゴリズムでは、入力として順序付けされた配列が必要です。そうでないと、正しく検索できないことに注意してください。したがって、二分検索アルゴリズムを使用する前に、検索対象の配列が昇順 (または降順) でソートされていることを確認する必要があります。

二分探索アルゴリズムの時間計算量は O(logn) であり、線形探索アルゴリズムの O(n) よりも効率的です。大規模なデータを処理する場合、二分探索アルゴリズムを使用すると、検索効率が大幅に向上します。

この記事が、読者が PHP 言語を使用して二分探索アルゴリズムを実装する方法を理解し、習得するのに役立つことを願っています。二分探索アルゴリズムを合理的に使用することで、順序付けされた配列での検索操作をより効率的に実行できます。

以上がPHPを使用して二分探索アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!