码迷,mamicode.com
首页 > 编程语言 > 详细

PHP算法之二分查找

时间:2019-04-24 20:55:29      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:end   重复   .com   find   算法   while   star   查找   最大   

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

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

 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算法之二分查找

标签:end   重复   .com   find   算法   while   star   查找   最大   

原文地址:https://www.cnblogs.com/qiucw-cn/p/10764821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!