PHP バイナリ検索の混乱

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-13 12:15:10
オリジナル
1072 人が閲覧しました

PHP バイナリ検索に関する混乱
$Arr=array(1,3,4,5,7,8,9);
Search($Arr,7,0,count($ Arr)-1);
function Search($Arr,$FindVal,$LeftIndex,$RightIndex){
if($FindVal>$Arr[count($Arr)-1]){
echo "値が見つかりませんでした";
}else if($FindVal<$Arr[0]){
echo "値が見つかりませんでした";
}else{
$MiddleIndex=round (($LeftIndex $RightIndex)/2);
if ($Arr[$MiddleIndex]<$FindVal){
Search($Arr,$FindVal, $MiddleIndex,$RightIndex);
} else if($Arr[$MiddleIndex]>$FindVal){
Search($Arr,$FindVal,$LeftIndex,--$MiddleIndex);
}else{
echo "次のように添え字を検索します$MiddleIndex";
}
}
}

このコードがいくつかの機能を実行するかどうか友達に尋ねたいと思います。タイミング図を詳しく説明できる人はいますか?ありがとう、感謝しています。
------解決策のアイデア----------------------

$Arr = array(1,3,4,5,7,8,9);<br />Search($Arr,7,0,count($Arr)-1);<br /><br />function Search($Arr,$FindVal,$LeftIndex,$RightIndex){<br />  echo "$FindVal,$LeftIndex,$RightIndex\n"; //加上这句<br />  if($FindVal>$Arr[count($Arr)-1]){<br />    echo "找不到该值";<br />  }else if($FindVal<$Arr[0]){<br />    echo "找不到该值";<br />  }else{<br />    $MiddleIndex=round(($LeftIndex+$RightIndex)/2);<br />    if ($Arr[$MiddleIndex]<$FindVal){<br />      Search($Arr,$FindVal,++$MiddleIndex,$RightIndex);<br />    }else if($Arr[$MiddleIndex]>$FindVal){<br />      Search($Arr,$FindVal,$LeftIndex,--$MiddleIndex);<br />    }else{<br />      echo "找到下标为$MiddleIndex";<br />    }<br />  }<br />}
ログイン後にコピー
7,0,6
7,4,6​​
7,4,4
添え字 4 を見つけます

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