ldq777888 2017-10-01 17:17 采纳率: 50%
浏览 863
已结题

各位大神,为什么二分法查找50的时候,会返回null?

function erfenfa($a,$value,$star,$end)
{

    if ( $star > $end ) 
    {
        return "数据 $value 不在范围内";
    }

    echo "开始从 $star - $end 之间寻找 <br>";
    $middle = floor( ($star+$end)/2 );
    $middle_value = $a[$middle];

    if ( $value == $middle_value ) 
    {
        return true;
    }

    elseif ( $value > $middle_value ) //从左边找
    {
        $end = $middle-1;
        erfenfa($a,$value,$star,$end);
    }

    elseif ( $value < $middle_value ) //从右边找
    {
        $star = $middle+1;
        erfenfa($a,$value,$star,$end);
    }
}

$length = count($a);
$star = 0;
$end = $length-1;
$value = 50;

echo "用二分法查找 $value <br>";
$s = erfenfa($a,$value,$star,$end);
var_dump($s);
  • 写回答

6条回答 默认 最新

  • threenewbee 2017-10-02 00:52
    关注

    二分法要求数据本身是有序的,你的输入是否满足这个前提。

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?