欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

这样写二分查找如何不对呢

程序员文章站 2024-01-29 10:50:40
...
这样写二分查找怎么不对呢

function binarySearch($arr,$a){

$low = 0;
$high = count($arr)-1;
$mid = ceil(($low+$high)/2);

while($low
if($a==$arr[$mid]){
echo "查找的数的位置是第"."$mid";
}

if($a>$arr[$mid]){

$high = count($arr)-1;
$low = $mid+1;
$mid = ceil(($low+$high)/2);
}

if ($a
$low = 0;
$high = $mid-1;
$mid = ceil(($low+$high)/2);
}
}
}
$arr1 = array(5,7,9,10,12,16,19);
binarySearch($arr1,12);

?>

------解决方案--------------------
本帖最后由 xuzuning 于 2013-03-30 17:42:33 编辑 function binarySearch($arr,$a){

$low = 0;
$high = count($arr)-1;
$mid = ceil(($low+$high)/2);
$n = 0;防止死循环的措施
while($low&& $n++){
if($a==$arr[$mid]){
echo "查找的数的位置是第"."$mid";
break;
}

if($a>$arr[$mid]){

$high = count($arr)-1;
$low = $mid-1;//注意这里
$mid = ceil(($low+$high)/2);
}

if ($a
$low = 0;
$high = $mid+1;//注意这里
$mid = ceil(($low+$high)/2);
}
}
}
------解决方案--------------------
按 php 实际可写作
function binarySearch($arr,$a){
$low = 0;
$high = count($arr)-1;
$mid = ceil(($low+$high)/2);
$num = count($arr);
while($low if($a==$arr[$mid]){
echo "查找的数的位置是第"."$mid";
break;
}
list($low, $high) = $a > $arr[$mid] ? array($mid, $high) : array($low, $mid);
$mid = ceil(($low+$high)/2);
}
}

------解决方案--------------------
这样写二分查找如何不对呢

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • 这样写二分查找如何不对呢
  • 专题推荐

    作者信息
    这样写二分查找如何不对呢

    认证0级讲师

    推荐视频教程
  • 这样写二分查找如何不对呢javascript初级视频教程
  • 这样写二分查找如何不对呢jquery 基础视频教程
  • 视频教程分类