在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()
函數)。