温馨提示×

php二分查找算法怎么实现

PHP
小亿
82
2024-03-15 17:19:00
栏目: 编程语言

PHP实现二分查找算法的步骤如下:

  1. 确定要查找的数组和目标值。
  2. 定义一个函数,传入查找的数组、目标值以及数组的起始位置和结束位置作为参数。
  3. 在函数内部,计算数组的中间位置,并将中间位置的值与目标值进行比较。
  4. 如果中间位置的值等于目标值,则直接返回中间位置的索引。
  5. 如果中间位置的值大于目标值,则在左半部分继续查找。
  6. 如果中间位置的值小于目标值,则在右半部分继续查找。
  7. 递归地调用函数,直到找到目标值或者左边界大于右边界为止。
  8. 如果找到目标值,则返回目标值所在的索引;否则返回-1,表示目标值不存在于数组中。

以下是一个实现二分查找算法的PHP代码示例:

function binarySearch($arr, $target, $left, $right) {
    if ($right >= $left) {
        $mid = $left + floor(($right - $left) / 2);

        if ($arr[$mid] == $target) {
            return $mid;
        }

        if ($arr[$mid] > $target) {
            return binarySearch($arr, $target, $left, $mid - 1);
        }

        return binarySearch($arr, $target, $mid + 1, $right);
    }

    return -1;
}

$arr = [1, 3, 5, 7, 9, 11, 13, 15];
$target = 7;
$index = binarySearch($arr, $target, 0, count($arr) - 1);

if ($index != -1) {
    echo "目标值在数组中的索引为: " . $index;
} else {
    echo "目标值不在数组中";
}

在以上代码中,我们首先定义了一个binarySearch函数来实现二分查找算法。然后我们定义了一个有序数组$arr和目标值$target,并调用binarySearch函数来查找目标值在数组中的索引。如果找到目标值,则输出目标值在数组中的索引;否则输出目标值不在数组中。

0