二分查找

function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return true;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return false;
}
$array=array(23,24,48,97,92,38);
$low=min(23,24,48,97,92,38);
$high=max(23,24,48,97,92,38);
$k=24;
if(bin_sch($array,$low,$high,$k)){
echo "二分查找成功";
}else{
echo "二分查找失败";
}

请问代码哪里写错了?

作者: zangcuanhh   发布时间: 2011-05-29

二分是针对有序数列查找

$array=array(23,24,48,97,92,38);所以这个数列就不合适

另外
PHP code

//$low=min(23,24,48,97,92,38);
//$high=max(23,24,48,97,92,38);



你没搞清楚$low, $high、或者min,max的意思,,,本意是下标值

所以你可改成
PHP code


$low    = 0;
$high    = count($array) - 1;


作者: amani11   发布时间: 2011-05-29