php算法-二分查找
发布时间:2021-12-16 14:07:48编辑:admin
普通二分查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function binarySearch($arr,$num){ if(!is_array($arr) || empty($arr)){ return false; } $len = count($arr); $first = 0; $last = $len - 1; while($first <= $last){ $m = (int)(($first + $last)/2); if($num < $arr[$m]){ $last = $m-1; }else if($num > $arr[$m]){ $first = $m + 1; }else{ return $m; } } } |
递归实现
1 2 3 4 5 6 7 8 9 10 11 12 13 | function binarySearchRecursion($arr,$num,$first,$last){ $m = (int)(($first + $last)/2); if($first > $last){ return -1; } if($num > $arr[$m]){ return search1($arr,$num,$m+1,$last); }else if($num < $arr[$m]){ return search1($arr,$num,$first,$m - 1); }else{ return $m; } } |
