PHP 二分法查找算法
递归写法
function binary_search($arr, $number, $lower, $high)
{
$middle = intval(($lower + $high) / 2);
if (!is_array($arr) || empty($arr)) {
return -1;
}
if ($arr[$middle] < $number) {
return binary_search($arr, $number, $middle+1, $high );
} elseif ($arr[$middle] > $number) {
return binary_search($arr, $number, $lower, $middle-1);
} else {
return $middle;
}
return -1;
}
$arr = [1,2,3,4,5,6,7,8,9,10,11,23];
var_dump(binary_search($arr, 8, 0, count($arr)));
结果
int(7)
非递归写法
function binary_search($arr, $number)
{
$len = count($arr);
$lower = 0;
$high = $len - 1;
while ($lower <= $high) {
$middle = intval(($lower + $high) / 2);
if ($arr[$middle] < $number) {
$lower = $middle + 1;
} elseif ($arr[$middle] > $number) {
$high = $middle-1;
} else {
return $middle;
}
}
return -1;
}
$arr = [1,2,3,4,5,6,7,8,9,10,11,23];
var_dump(binary_search($arr, 8));
结果
int(7)
本文作者:nonsenseLive
本文链接:https://www.cnblogs.com/venchi/articles/14928668.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步