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 ; } } |