欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

php实现简单的二分查找

程序员文章站 2022-07-12 14:36:38
...
<?php
// 待查找区间
$arr = [1, 3, 7, 9, 11, 57, 63,55, 99];
// 非递归查找57所在的位置
$find_key = binary_search_recursion($arr,399,0,count($arr));
echo('位置是'.$find_key).PHP_EOL;
echo($arr[$find_key]);


function binary_search_recursion(&$arr, $number, $lower, $high) {
    // 以$a,区间的中间点作为参照点比较
    $middle = intval(($lower + $high) / 2);
    // 最低点比最高点大就退出
    if ($lower > $high) {
        return -1;
    }
    if ($number > $arr[$middle]) {
        // 查找数比参照点大,舍去左边继续查找
        return binary_search_recursion($arr, $number, $middle + 1, $high);
    } elseif ($number < $arr[$middle]) {
        // 查找数比参照点小,舍去右边继续查找
        return binary_search_recursion($arr, $number, $lower, $middle - 1);
    } else {
        return $middle;
    }
}
相关标签: 常用算法