/**
* 注意:二分法的前提是,需要数组是有序的
*/
$arr_list = [10, 11, 14, 16, 18, 19, 21, 29, 30, 36, 38, 42, 43, 47, 49, 50, 53, 54, 57, 80, 84, 94, 96, 102, 105, 107, 120, 125, 129, 138, 139, 140, 150, 188, 190, 200];
sort($arr_list);
/**
* @param $arr
* @param $num
* @return int
*/
function desc($arr, $num)
{
$start = 0;
$end = count($arr) - 1;//获取长度-1
while ($start < $end) {
$mid = intval(($end + $start) / 2);
if ($arr[$mid] == $num) {
return $mid;
} elseif ($arr[$mid] < $num) {
//说明查找目标在下半区
$start = $mid;
} elseif ($arr[$mid] > $num) {
//说明查找目标在上半区
$end = $mid;
}
}
return -1;
}
$mid = desc($arr_list, 102);
print_r($arr_list[$mid]);
PHP实现二分查找,详解
最新推荐文章于 2021-10-27 16:17:27 发布
本文深入探讨了二分查找算法的实现原理,通过一个具体的PHP示例代码,展示了如何在一个有序数组中查找特定元素的位置。文章详细解释了二分查找算法的步骤,包括初始化搜索范围、计算中间位置、比较目标值与中间值以及调整搜索范围,直至找到目标值或确定目标值不存在于数组中。
550

被折叠的 条评论
为什么被折叠?



