PHPに実装された二分探索アルゴリズムの例の説明

jacklove
リリース: 2023-04-02 15:46:01
オリジナル
1869 人が閲覧しました

この記事では、主に PHP に実装された半検索アルゴリズムを紹介し、半検索の原理を簡単に説明し、次の形式で半検索アルゴリズムを実装するための再帰的および非再帰的方法を使用した PHP の関連操作スキルを分析します。必要な方は、以下を参照してください。

この記事の例では、PHP で実装された半検索アルゴリズムについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

定義: 半探索技術、つまり二分探索です。その前提として、線形テーブル内のレコードはキー順 (通常は大きいものから小さいものへ) である必要があり、線形テーブルは順番に格納される必要があります。

半検索の基本的な考え方: 中央のレコードを比較対象とし、指定された値が中央のレコードのキーである場合、中央のレコードのキーは等しい場合、検索は成功します。 if 指定された値が中央レコードのキーより小さい場合、検索を続行します。指定された値が中央レコードのキーより大きい場合、中央レコードの右半分で検索を続行します。 。検索が成功するか、すべての検索領域にレコードがなく検索が失敗するまで、上記のプロセスを繰り返します。

実装コード:

<?php
//递归方式
function bin_recur_search($arr,$val){
  global $time;
  if(count($arr) >= 1){
    $mid = intval(count($arr) / 2);
    $time++;
    if($arr[$mid] == $val){
      return &#39;值为:&#39;.$arr[$mid].&#39;<br>查找次数:&#39;.$time.&#39;<br>&#39;;
    }elseif($arr[$mid] > $val){
      $arr = array_splice($arr,0,$mid);
      return bin_recur_search($arr, $val);
    }else{
      $arr = array_slice($arr,$mid + 1);
      return bin_recur_search($arr, $val);
    }
  }
  return &#39;未找到&#39;.$val;
}
//非递归方式
function bin_search($arr,$val){
  if(count($arr) >= 1){
    $low = 0;
    $high = count($arr);
    $time = 0;
    while($low <= $high){
      $time++;
      $mid = intval(($low + $high)/2);
      if($val == $arr[$mid]){
        return &#39;索引:&#39;.$mid.&#39;<br>值为:&#39;.$arr[$mid].&#39;<br>查找次数:&#39;.$time;
      }elseif($val > $arr[$mid]){
        $low = $mid + 1;
      }else{
        $high = $mid - 1;
      }
    }
  }
  return &#39;未找到&#39;.$val;
}
$arr = array(1,3,5,7,7,9,25,68,98,145,673,8542);
echo bin_recur_search($arr, 673);
echo bin_search($arr, 673);
?>
ログイン後にコピー

実行結果:

值为:673
查找次数:4
索引:10
值为:673
查找次数:4
ログイン後にコピー

#興味があるかもしれない記事:

PHP に実装された文字列一致アルゴリズムの例

# #PHP に実装されている最大前方一致アルゴリズムの例説明


PHP パフォーマンス解析ツール xhprof のインストールと使い方と注意事項


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

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