PHP-二分查找

function binarySearch($arr,$findval,$leftIndex,$rigthIndex){

    if($leftIndex > $rigthIndex){

       echo '找不到这个数';

       return ;

    }

    $middleIndex = round(($leftIndex+$rigthIndex)/2);

    if($findval > $arr[$middleIndex]){

        binarySearch($arr, $findval, $middleIndex+1, $rigthIndex);

    }else if($findval < $arr[$middleIndex]){

        binarySearch($arr, $findval, $leftIndex, $middleIndex-1);

    }else{

        echo '这个数的下标是'. $middleIndex;

    }

}


 

#while实现
function
binarySearch_(Array $arr, $target) { $low = 0; $high = count($arr) - 1; while($low <= $high) { $mid = floor(($low + $high) / 2); #找到元素 if($arr[$mid] == $target){ return $mid; } #中元素比目标大,查找左部 if($arr[$mid] > $target){ $high = $mid - 1; } #重元素比目标小,查找右部 if($arr[$mid] < $target){ $low = $mid + 1; } } #查找失败 return 'not found'; }

 

你可能感兴趣的:(二分查找)