PHPバイナリ検索

WBOY
リリース: 2016-07-29 09:12:56
オリジナル
949 人が閲覧しました

二分探索では配列を順序付けする必要があり、効率は O(logn)

<code><span><span><?php</span><span>#二分查找</span><span><span>function</span><span>binarySearch</span><span>(Array <span>$arr</span>, <span>$target</span>)</span> {</span><span>$low</span> = <span>0</span>;
        <span>$high</span> = count(<span>$arr</span>) - <span>1</span>;

        <span>while</span>(<span>$low</span> <= <span>$high</span>) {
            <span>$mid</span> = floor((<span>$low</span> + <span>$high</span>) / <span>2</span>);
            <span>#找到元素</span><span>if</span>(<span>$arr</span>[<span>$mid</span>] == <span>$target</span>) <span>return</span><span>$mid</span>;
            <span>#中元素比目标大,查找左部</span><span>if</span>(<span>$arr</span>[<span>$mid</span>] > <span>$target</span>) <span>$high</span> = <span>$mid</span> - <span>1</span>;
            <span>#重元素比目标小,查找右部</span><span>if</span>(<span>$arr</span>[<span>$mid</span>] < <span>$target</span>) <span>$low</span> = <span>$mid</span> + <span>1</span>;
        }

        <span>#查找失败</span><span>return</span><span>false</span>;
    }

    <span>$arr</span> = <span>array</span>(<span>1</span>, <span>3</span>, <span>5</span>, <span>7</span>, <span>9</span>, <span>11</span>);
    <span>$inx</span> = binarySearch(<span>$arr</span>, <span>1</span>);
    var_dump(<span>$inx</span>);
<span>?></span></span></code>
ログイン後にコピー
').addClass('pre-numbering').hide(); です。 $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

以上、内容面も含めて PHP バイナリサーチを紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート