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 "二分查找失败";
}请问代码哪里写错了?

解决方案 »

  1.   

    二分是针对有序数列查找$array=array(23,24,48,97,92,38);所以这个数列就不合适另外//$low=min(23,24,48,97,92,38);
    //$high=max(23,24,48,97,92,38);
    你没搞清楚$low, $high、或者min,max的意思,,,本意是下标值所以你可改成
    $low = 0;
    $high = count($array) - 1;