码迷,mamicode.com
首页 > Web开发 > 详细

二分法php

时间:2016-01-14 16:13:12      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

  最近要开始学学一些算法了...有些算法会让你感叹真尼玛巧妙。。我觉得有些算法被发明出来,需要是个数学家。。比如快速排序,简直感叹他怎么想到的...没人家的智力只能多看多记了哈哈~

今儿写个简单的算法,二分法。

 

<?php


function bsearch($v, $arr){

    $low = 0;
    $high = count($arr)-1;// 使用下标,注意减去1

    while($low <= $high){// 注意等于号
        $i = intval(($high + $low)/2);

        if ($arr[$i] > $v){
            $high = $i-1;
        } else if ($arr[$i] < $v){
            $low = $i+1;
        } else {
            return  $i;
        }
    }

    return -1;// 找不到的时候返回-1
}


$arr = array(
    1, 3, 5, 7, 9, 13
);


echo bsearch(13, $arr);// 5
echo ‘<hr/>‘;
echo bsearch(14, $arr);// -1

 

貌似简单的算法,还是自己动手写下好哈哈~

注意凡是使用到while的时候,一定要防备无限循环的时候,注意终止循环的判断。比如$low<=$high,这个等于号必须有。

 

二分法php

标签:

原文地址:http://www.cnblogs.com/firstForEver/p/5130397.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!