二分查找是我们经常提到的一种基础算法,他的前提是数组有规律的排列,有小到大或由大到小这类。在生活中我们也会用到,像经常做的一个猜数字的游戏,就用到了类似的逻辑。
<?php
public function actionTest()
{
$arr = array(1,4,9,11,19,22,39,44,50,55,90,89,200,390,489,1900);
$target = 22;
$info = $this->half($arr, $target);
return $info;
}
public function half($arr,$target)
{
//先设定数组的最大、最小键,计算中间键值
$min = 0;
$max = count($arr) -1;
$mid = floor(($max + $min) / 2 );
for($i = 1;$i < $max;$i++) {
if ($arr[$mid] > $target) {
// $max = $arr[$mid];
$arr = array_slice($arr, 0, $mid);
} else if ($arr[$mid] < $target) {
// $min = $arr[$mid];
$arr = array_slice($arr, $mid);
} else {
return '查找的是' . $arr[$mid] . '共查了' . $i . '次';
}
$mid = floor((count($arr))/ 2);
}
}
这篇博客介绍了二分查找算法的基本原理,并通过一个PHP函数`half`展示了如何在有序数组中应用此算法来查找目标元素。示例代码中,数组 `$arr` 被用来演示查找过程,目标值为 `$target=22`。通过不断调整数组范围,最终找到目标元素并返回查找次数。
540

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



