📜  PHP中的二进制搜索

📅  最后修改于: 2022-05-13 01:56:37.613000             🧑  作者: Mango

PHP中的二进制搜索

二进制搜索是一种搜索技术,用于搜索已排序数组中的元素。在本文中,我们将学习如何使用迭代和递归的方式在PHP中实现二进制搜索。给定一个数字数组,我们需要使用二分搜索来搜索数组中元素 x 的存在。

例子:

Input : 1 2 3 4 5
        5 
Output : 5 Exists

Input : 1 5 8
        0
Output : 0 Doesnt Exist

这种搜索技术比线性搜索更有效。

方法1(迭代)

涉及的步骤:
1)将数组排序为二进制搜索仅适用于排序范围
2)如果我们希望搜索的元素大于右侧的中间元素搜索,则计算中间元素,否则在左侧搜索。
3) 如果找到元素,则返回 True。


输出:

5 Exists

方法2(递归):
递归是一种我们重复调用相同函数直到匹配基本条件以结束递归的方式。
继续方法1中的步骤,我们使用相同的想法,只是以递归方式更改函数的参数并分解问题。

function binarySearch(Array $arr, $start, $end, $x){
    if ($end < $start)
        return false;
   
    $mid = floor(($end + $start)/2);
    if ($arr[$mid] == $x) 
        return true;
  
    elseif ($arr[$mid] > $x) {
  
        // call binarySearch on [start, mid - 1]
        return binarySearch($arr, $start, $mid - 1, $x);
    }
    else {
  
        // call binarySearch on [mid + 1, end]
        return binarySearch($arr, $mid + 1, $end, $x);
    }
}
  
// Driver code
$arr = array(1, 2, 3, 4, 5);
$value = 5;
if(binarySearch($arr, 0, count($arr) - 1, $value) == true) {
    echo $value." Exists";
}
else {
    echo $value." Doesnt Exist";
}

输出:

5 Exists

相关PHP函数: PHP中的 in_array()
PHP中的array_key_exists()