この記事では、主に PHP で実装された二分探索アルゴリズムを紹介し、二分探索アルゴリズムの原理と、ループや再帰などの実装テクニックを例の形で分析します。 ##この記事の例では、PHP に実装された二分探索アルゴリズムについて説明します。参考までに皆さんと共有してください。詳細は次のとおりです。
二分探索法では、配列が順序付けされた配列であることが必要です。
配列が増加する配列であると仮定すると、まず次のことが必要です。配列 Location.
1 の中央を見つけます。中間位置を知るには、開始位置と終了位置を知ってから、中間位置の値を取得してこの値と比較する必要があります。 ###二。中間の値が指定した値より大きい場合は、値が中間位置よりも前であることを意味します。このとき、再度 2 つに分割する必要があります。中間より前であるため、変更する必要がある値は終了位置の値 このとき、終了位置の値は「この時点では真ん中にいます」となるはずです。 ###三つ。一方、中間の値が与えた値より小さい場合は、与えられた値が中間位置より後のことを意味しますが、このとき、後半の値は次のとおりであるため、再度 2 つに分割する必要があります。中間値の後なので、変更する必要がある値は開始位置の値であるため、この時点での開始位置の値は、指定された値が見つかるまでの中間位置でなければなりません。 ###四。または、中間値が最初の開始位置または終了位置に等しい場合 (この場合、指定された値が見つかりません)、コードを使用して実装しましょう~
//循环实现 function getValue($num,$arr) { //查找数组的中间位置 $length=count($arr); $start=0; $end=$length; $middle=floor(($start+$end)/2); //循环判断 while($start>$end-1) { if($arr[middle]==$num) { return middle+1; }elseif($arr[middle]<$num) { //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 //所以起始位置变成当前的middle的值,end位置不变。 $start=$middle; $middle=floor(($start+$end)/2); }else{ //反之 $end=$middle; $middle=floor(($start+$end)/2); }} return false; }
//循环实现 function getValue($num,$arr) { //查找数组的中间位置 $length=count($arr); $start=0; $end=$length; $middle=floor(($start+$end)/2); //循环判断 while($start>$end-1) { if($arr[middle]==$num) { return middle+1; }elseif($arr[middle]<$num) { //如果当前要查找的值比当前数组的中间值还要打,那么意味着该值在数组的后半段 //所以起始位置变成当前的middle的值,end位置不变。 $start=$middle; $middle=floor(($start+$end)/2); }else{ //反之 $end=$middle; $middle=floor(($start+$end)/2); }} return false; }
半分PHP で実装された検索アルゴリズムの例の説明
最大値の例の説明PHP によって実装された前方一致アルゴリズム
以上がPHPに実装された二分探索アルゴリズムの解析と解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。