标签:png 数组 二分查找 IV order 复杂度 判断 return 下标

第一步:我们选取目标数和基准值
$arr = [1,2,3,4,5,6,7,8,9]; $mind = ceil(($start+$end)/2);
第二步:判断当前要查找的值是否是基准值,是就直接返回下标;不是在判断是不是基准值的左边或右边,如果不存在,数组继续选取,直到找到为止返回下标。
图解

注意:
1、二分查找法一定是排好序的,才能使用二分查找;
function binSearch($arr, $key, $start, $end)
{
$mid = ceil(($start+$end) / 2);
if($arr[$mid] < $key){
binSearch($arr, $key, $mid+1, $end);
}else if($arr[$mid] > $key){
binSearch($arr, $key, $start, $mid-1);
}else{
return $mid;
}
}
$arr = [1,2,3,4,5,6,7,8,9];
$len = count($arr) - 1;
$data = binSearch($arr, 5, 0, $len);
var_dump($data);
function binSearch($arr, $key){
$start=0;
$end=count($arr)-1;
while($start <= $end){
$mid = ceil(($start+$end)/2);
if($arr[$mid] < $key){
$start = $mid+1;
}else if($arr[$mid] > $key){
$end = $mid-1;
}else{
return $mid;
}
}
}
$arr = [1,2,3,4,5,6,7,8,9];
$len = count($arr) - 1;
$data = binSearch($arr, 5, 0, $len);
var_dump($data);
| 查找算法 | 时间复杂度 | 空间复杂度 | 稳定性 | ||
| 平均情况 | 最坏情况 | 最好情况 | |||
| 二分查找法 | O(log2n) | O(n) | O(log2n) | O(1)-O(log2N ) | 稳定 |
标签:png 数组 二分查找 IV order 复杂度 判断 return 下标
原文地址:https://www.cnblogs.com/meichao/p/9226478.html