PHP二分查找法

原文链接:
https://blog.csdn.net/qq_24935119/article/details/103805117

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

/**

  • @param array $arr 待查找区间
  • @param int $number 查找数
  • @param int $lower 区间最低点
  • @param int $high 区间最高点
  • @return int
    */
    function binary_search_recursion(&$arr, $number, $lower, $high)
    {
    // 以区间的中间点作为参照点比较
    m i d d l e = i n t v a l ( ( middle = intval(( middle=intval((lower + h i g h ) / 2 ) ; / / 最 低 点 比 最 高 点 大 就 退 出 i f ( high) / 2); // 最低点比最高点大就退出 if ( high)/2);//退if(lower > h i g h ) r e t u r n − 1 ; i f ( high) { return -1; } if ( high)return1;if(number > a r r [ arr[ arr[middle]) {
    // 查找数比参照点大,舍去左边继续查找
    return binary_search_recursion($arr, $number, $middle + 1, KaTeX parse error: Expected 'EOF', got '}' at position 9: high); }̲ elseif (number < a r r [ arr[ arr[middle]) {
    // 查找数比参照点小,舍去右边继续查找
    return binary_search_recursion($arr, $number, $lower, $middle - 1);
    } else {
    return $middle;
    }
    }

$arr = [1,2,3,4,5,6,7,8,9];
r e s u l t = b i n a r y s e a r c h r e c u r s i o n ( result = binary_search_recursion( result=binarysearchrecursion(arr, 5, 0, count($arr));

echo $result; // 输出4

猜你喜欢

转载自blog.csdn.net/m0_37866091/article/details/121003633