PHP实现二分查找

<?php
//1.递归方式实现
$num1 = 2;
$arr1 = array(1,4,12,14,19,22,27,27,29,34,36,39,55,55,65,85);
function BinarySearch($arr,$num,$start,$end){
	if($start > $end)return false;
	$mid = floor(($start+$end)/2);
	if($num == $arr[$mid]){
		return $mid;
	}
	else if($num <$arr[$mid]){
		$start = $start;
		$end = $mid - 1;
		return BinarySearch($arr,$num,$start,$end);
	}
	else{
		$start = $mid + 1;
		$end = $end;
		return BinarySearch($arr,$num,$start,$end);
	}

}
$len = count($arr1);
$result = BinarySearch($arr1,$num1,0,$len-1);
if($result === false){
	echo "没找到";
}
else{
	echo "位置为:$result";
}


//2.普通方式
function binarySearch($array, $val) {
    $count = count($array);
    $low = 0;
    $high = $count - 1;
    while ($low <= $high) {
        $mid = intval(($low + $high) / 2);
        if ($array[$mid] == $val) {
            return $mid;
        }
        if ($array[$mid] < $val) {
            $low = $mid + 1;
        } else {
            $high = $mid - 1;
        }
    }
    return false;
}

posted @ 2019-03-21 21:38  MeetU  阅读(137)  评论(0编辑  收藏  举报