$low = 0;
$high = count($arr)-1;
$mid = ceil(($low+$high)/2);
$n = 0;防止死循环的措施
while($low<=$high && $n++$arr[$mid]){
$high = count($arr)-1;
$low = $mid -1; //注意这里
$mid = ceil(($low+$high)/2);
}
if ($a<$arr[$mid]) {
$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 $arr[$mid] ? array($mid, $high) : array($low, $mid); $mid = ceil(($low+$high)/2); }}
本帖最后由 xuzuning 于 2013-03-30 17:42:33 编辑
function binarysearch($arr,$a){
$low = 0;
$high = count($arr)-1;
$mid = ceil(($low+$high)/2);
$n = 0;防止死循环的措……
我有点晕 如果是四个数呢,比如$r=array(1,2,3,4) 查找1 貌似不行 用floor来求$mid 这个 我 理解,用ceil貌似 有点问题、、、、
按 php 实际可写作
php code?1234567891011121314function binarysearch($arr,$a){ $low = 0; $high = count($arr)-1; $mid = ceil(($low+$high)/2); $num = count($arr); while($low<=$high &&……[/quote
还是要 谢谢 版主大大、、、
function binarysearch($arr,$a){ $low = 0; $high = count($arr)-1; $mid = ceil(($low+$high)/2); $loop = count($arr); while($low$arr[$mid] ? array($mid, $high) : array($low, $mid); $mid = ceil(($low+$high)/2); } echo 查找的数的位置在第{$low}、{$high}之间;}$arr1 = array(5,7,9,10,12,16,19);binarysearch($arr1,11);