php 实现简单的二分查找

<?php
 #二分查找
 function binarySearch($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 false;
}
$data = array(1,2,6,3,4,5,7,8,9)
//一定要是一个有序的数组  正序倒序均可!!
sort($data);
var_dump(binarySearch($data,5))

 

posted @ 2017-03-25 09:21  施公子的二十七杯酒  阅读(120)  评论(0编辑  收藏  举报