php二分查找

二分查找法,每次查找的数据,都是上一次的一半。所以速度很快。不过需要建立在已经排序好的数组上。

<?php
function binarySearch(array $arr, $target) {
    $low = 0;
    $max = count($arr) - 1;

    while($low <= $max) {
        $mid = (int)(($max + $low) / 2);

        if ($arr[$mid] > $target) $max = $mid - 1;

        if ($arr[$mid] < $target) $low = $mid + 1;

        if ($arr[$mid] == $target) return $mid;
    }

    return false;
}

echo binarySearch(array(1,2,3,4,5,6,7,8,9,10), 3);

 

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>