二分查找算法的PHP实现与改进

在数据结构中,除了常用的顺序查找外,当属二分查找了,不仅工作中会经常用到,面试也会经常遇到

下面是二分查找的PHP实现:

  1 function halfSearch($array ,$search) {
 2     $len = count($array);
 3     $low = 0 ;
 4     $high$len - 1 ;
 5     while ($low <= $high){
 6         $mid = floor(($high + $low)/2) ; 
 7         if($array[$mid]>$search){
 8             $high = $mid - 1 ;
 9         }else if($array[$mid]<$search){
10             $low  = $mid + 1 ;
11         }else{
12             return $mid ;
13         }
14     }
15     return false ;
16 }

 这是经典二分查找

大家看还能改进吗?当然可以

如果查找值比最大的大,或比小的小,那我们是不是可以确定查找不到该元素

 

所以我们把代码改进下

 

 

 1 function halfSearch($array ,$search) {
 2     $len = count($array);
 3     $low = 0 ;
 4     $high$len - 1 ;
 5     if($search <$array[$low] || $search > $array[$high]){
 6         return false ;
 7     }
 8     while ($low <= $high){
 9         $mid = floor(($high + $low)/2) ; 
10         if($array[$mid]>$search){
11             $high = $mid - 1 ;
12         }else if($array[$mid]<$search){
13             $low  = $mid + 1 ;
14         }else{
15             return $mid ;
16         }
17     }
18     return false ;

19 } 

 

二分查找是比较简单的算法,是必须掌握的算法,大家一定要理会算法的思想 

 

posted @ 2012-06-03 21:56  笨瓜一号  阅读(1726)  评论(0编辑  收藏  举报