二分查找:
   数组必须有序,且不重复。

一般实际工作中,很少有这样的数组,所以应用的很少,但是思想很好.

 1 // 二分查找
 2 $array = [10,14,23,33,45,56,65,77,89,99,102];
 3 $find = 56;
 4 
 5 function search($array,$find)
 6 {
 7     $end = count($array)-1;            //求出最大的数组个数,并以此为结束
 8     $start = 0 ;                       //以0开始
 9     $mid = floor(($end + $start)/2);   //取二分查找的中间数
10     while ($start <= $end ){           //当最小下标<最大下标时继续,说明没有查找到
11         if($find < $array[$mid]){      
12             $end = $mid -1;            //如果查找的数小于中间数,那么区间的最大下标前移
13         }elseif ($find > $array[$mid]) {
14             $start = $mid +1;          //如果查找的数大于中间数,那么区间的最小下标后移
15         }else{
16             return $mid;               //返回查询得到的数字下标
17         }
18         $mid = floor(($end + $start)/2);
19     }
20 }
21 
22 echo search($array,$find);

 PHP算法之二分查找 随笔

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。