标签: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