二分查找
思路:就是不断将查询的范围减半,从而加快查询速度
//二分查找,前提数组有序
$seach = [1, 3, 4, 6, 7, 8, 9, 12, 14, 15, 16, 17, 22, 24, 26];
function binSearch($arr, $key)
{
$low = 0;
$high = count($arr) - 1;
//思路就是不断将查询的范围减半,从而加快查询速度
while ($low <= $high) {
$middle = intval(($low + $high) / 2);
if ($key < $arr[$middle]) {
$high = $middle;
} elseif ($key > $arr[$middle]) {
//不加一会找最后一个值时造成死循环,
$low = $middle + 1;
} else {
return $arr[$middle];
}
}
return '找不到';
}
echo binSearch($seach, 14);