首页 > 编程语言 > 详细

非递归二分查找算法和利用二分查找算法求平方根

时间:2020-07-14 00:36:23      阅读:65      评论:0      收藏:0      [点我收藏+]

1.二分查找算法

function binarySearch(array $arr, int $n) {
    $low = 0;
    $high = count($arr) - 1;
    while($low <= $high) {
        $mid = intval(($low + $high) / 2);//$mid = $low + ($high - $low) / 2
        if($arr[$mid] < $n) {
            $low = $mid + 1;
        } elseif ($arr[$mid] > $n) {
            $high = $mid - 1;
        } else {
            return "$n in array, offset is $mid";//直接返回
        }
    }
    return "$n is not in array";
}

2.二分查找算法求平方根

function squareRoot(float $n) {
    if ($n < 0) {
        return ‘‘;
    } elseif ($n < 1) {
        $less = $n;
        $bigger = 1;
    } else {
        $less = 0;
        $bigger = $n;
    }
    $value = floatval(($less + $bigger) / 2);
    while(abs($value * $value - $n) > 0.000001) {//精度
        $value = ($less + $bigger) / 2;
        if($value * $value > $n) {
            $bigger = $value - 0.000001;
        } else if($value * $value < $n) {
            $less = $value + 0.000001;
        } else {
            return $value;
        }
    }
    return $value;
}

3.应用的局限性
(1)数据结构为数组,需要连续的内存空间,当数据量过大时,会出现无法分配内存的情况。
(2)数据有序。

非递归二分查找算法和利用二分查找算法求平方根

原文:https://www.cnblogs.com/tutuut/p/13296768.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!