ホームページ >バックエンド開発 >PHPチュートリアル >PHP で二分探索アルゴリズムを実装する方法

PHP で二分探索アルゴリズムを実装する方法

小云云
小云云オリジナル
2017-12-20 10:36:572140ブラウズ

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

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

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

実装コード:


<?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

関連推奨事項:

Javaアルゴリズムにおける二分探索と半探索の詳細な例

JavaScriptの半探​​索の詳細な説明_JavaScript スキル

javascript 配列内の文字の位置を半分で見つける (順序付きリスト)_javascript スキル

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。