PHP二分探索の再帰と反復について詳しく解説

小云云
リリース: 2023-03-22 14:46:01
オリジナル
1078 人が閲覧しました

再帰と反復のそれぞれの時間計算量に関して、再帰の時間計算量は O(N) ですが、反復の時間計算量は O(logN) であることが、2 つの曲線 y=N と Y=logN からわかります。 O(logN) の方が良いです。この記事では主に PHP バイナリ検索の再帰と反復について詳しく説明します。お役に立てれば幸いです。

以下は 2 つのコードと、確実な効率テスト用のコードです。

 $v) {  
            $right = $middle - 1;  
        } elseif ($arr[$middle] < $v) {  
            $left  = $middle + 1;  
        } else {  
            return $middle;  
        }  
    }  
    return -1;  
}  
  
  
$arr = [];  
for ($i=0;$i<300000;$i++){  
    $arr[] = $i;  
}  
list($first) = explode(" ",microtime());  
echo dichotomyIterationSearch($arr,count($arr),35387);echo '
'; list($second) = explode(" ",microtime()); echo round($second - $first,5)*1000000; function dichotomyRecursionSearch($arr, $low, $high, $v) { $middle = bcp(bcadd($low, $high), 2); if ($low < $high) { if ($arr[$middle] > $v) { $high = $middle - 1; return dichotomyRecursionSearch($arr, $low, $high, $v); } elseif ($arr[$middle] < $v) { $low = $middle + 1; return dichotomyRecursionSearch($arr, $low, $high, $v); } else { return $middle; } } elseif ($high == $low) { if ($arr[$middle] == $v) { return $middle; } else { return -1; } } return -1; } $arr = []; for ($i=0;$i<300000;$i++){ $arr[] = $i; } echo "
"; list($first) = explode(" ",microtime()); echo dichotomyRecursionSearch($arr,0, count($arr),35387);echo '
'; list($second) = explode(" ",microtime()); echo round($second - $first, 5)*1000000;
ログイン後にコピー

関連する推奨事項:

二分検索の概要と詳細な例

JavaScript が二分検索を使用してデータを検索する方法の紹介

配列内の要素の二分検索

以上がPHP二分探索の再帰と反復について詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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