在PHP中实现二分查找,首先确保数组已经排序。然后使用以下代码实现二分查找:
function binarySearch($arr, $target) {
$left = 0;
$right = count($arr) - 1;
while ($left <= $right) {
$mid = (int)(($left + $right) / 2);
$midVal = $arr[$mid];
if ($midVal == $target) {
return $mid; // 目标值找到,返回索引
} elseif ($midVal < $target) {
$left = $mid + 1; // 目标值在右侧子数组
} else {
$right = $mid - 1; // 目标值在左侧子数组
}
}
return -1; // 目标值不存在于数组中,返回-1
}
以下是如何使用这个函数的示例:
// 示例数组(已排序)
$arr = [1, 3, 5, 7, 9, 11, 13, 15];
// 要查找的目标值
$target = 7;
// 调用二分查找函数
$result = binarySearch($arr, $target);
// 输出结果
if ($result != -1) {
echo "目标值 " . $target . " 在数组中的索引为 " . $result;
} else {
echo "目标值 " . $target . " 不在数组中";
}
注意:这个实现假定输入数组已经排序。如果输入数组未排序,需要先对数组进行排序(如使用sort()
函数)。