二分查找
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 "二分查找失败";
}
请问代码哪里写错了?
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, $high、或者min,max的意思,,,本意是下标值
所以你可改成
PHP code
$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