原文链接:
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)return−1;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