PHP二分查找的困惑
Jun 13, 2016 pm 12:15 PM
arr
nbsp
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($FindValecho "找不到该值";
}else{
$MiddleIndex=round(($LeftIndex+$RightIndex)/2);
if ($Arr[$MiddleIndex]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,4,6
7,4,4
找到下标为4
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

OOBELANGUAGE错误Windows 11 / 10修复中出现问题的问题
