之前学习数据结构使用的是C++,二分查找也使用的是C++完成的,这几天练习php的基础算法,所以也就使用php来完成了二分查找
具体代码如下
<?php
function BinSearch($array, $value)
{
$low = 0;
$high = count($array);
while ($low <= $high) {
$mid = intval(($low + $high) / 2); //取数组的中值
if ($value < $array[$mid]) //如果中值比查找值大则说明 查找元素在数组左半区
$high = $mid - 1; //因为中值在左半区,所以缩小查找的高度high
elseif ($value > $array[$mid]) //如果中值比查找值大则说明 查找元素在右半区
$low = $mid + 1; //因为中值在右半区,所以增加查询的初值low
else
return $mid; //如果查找值等于我们的中值,所以我们直接返回
}
return "search fail !";
}
$arr = range(4, 12); // 注意 二分查找的对象是有序的数组
$res = BinSearch($arr, 11);
var_dump($res);