ホームページ >バックエンド開発 >PHPチュートリアル >PHPに実装された二分探索アルゴリズムの解析と解説

PHPに実装された二分探索アルゴリズムの解析と解説

jacklove
jackloveオリジナル
2018-07-05 17:50:241659ブラウズ

この記事では、主に 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に実装された二分探索アルゴリズムの解析と解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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