首页 > Web开发 > 详细

php 二分查找

时间:2017-04-02 21:12:17      阅读:273      评论:0      收藏:0      [点我收藏+]
 1   /**
 2      *  二分查找
 3      * @param $key 要查找的值
 4      * @param $data 数据源
 5      * @return int|string 返回找到结果
 6      */
 7     public function halfsearch($key, $data){
 8         //统计总数
 9         $count = count($data);
10         //起始位值
11         $start = 0;
12         //结束位置
13         $end = $count - 1;
14         while($end >= $start){
15             //每次查找时的中间值
16             $mid = floor(($end + $start) / 2);
17             if($key == $data[$mid]){
18                 return $mid;
19             }elseif($key > $data[$mid]){    //比中间的值大,从右边开始找
20                 $start = $mid + 1;
21             }elseif($key < $data[$mid]){    //比中间值小,从左边开始找
22                 $end = $mid - 1;
23             }
24         }
25 
26         return ‘not found ~‘;
27     }

 

二分查找的优点和缺点

  虽然二分查找的效率高,但是要将数据源先排序。而排序本身是一种很费时的运算。既使采用高效率的排序方法也要花费O(nlgn)的时间。

  二分查找只适用顺序存储结构。为保持表的有序性,在顺序结构里插入和删除都必须移动大量的结点。

  因此,二分查找特别适用于那种一经建立就很少改动、而又经常需要查找的线性表。对那些查找少而又经常需要改动的线性表,可采用链表作存储结构,进行顺序查找。

php 二分查找

原文:http://www.cnblogs.com/open-i/p/6659745.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!