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 />}