coding... next.|

nonsenseLive

园龄:4年9个月粉丝:0关注:3

2021-06-24 21:31阅读: 55评论: 0推荐: 0

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 中国大陆许可协议进行许可。

posted @   nonsenseLive  阅读(55)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起