巩固一下大学时期学习的二分查找法,用PHP实现:
1.递归方法实现:
/** * @Description:二分查找法 * @User:jysdhr * @param $target 查找目标 * @param $arr 待查找数组 * @param $l 数组起始索引 * @param $r 数组结束索引 * @return int target所在位置 -1则不存在 */function BinarySearch($target,$arr,$l,$r){ if ($l>$r){ return -1; } $mid = $l+($r-$l)/2; if ($target == $arr[$mid]) return $mid; if ($target<$arr[$mid]) return BinarySearch($target,$arr,$l,$mid-1); else return BinarySearch($target,$arr,$mid+1,$r);}$arr = [1,3,5,6,7,8,10];var_dump(BinarySearch(9,$arr,0,6)) ;
2.循环方法实现:
总结:因为PHP有自动类型转换,而不用考虑整形溢出的这种异常.哈哈,不得不说,php处理二分查找确实很简单.也很好理解(强类型语言注意int型溢出)