PHP 查找算法

<?php    
    header("content-type:text/html;charset=utf-8");  
    //二分查找法  (排序好的数组)  
    function binSearch($arr,$search){    
        $height=count($arr)-1;    
        $low=0;    
        while($low<=$height){    
            $mid=floor(($low+$height)/2);//获取中间数    
            if($arr[$mid]==$search){    
                return $mid;//返回    
            }elseif($arr[$mid]<$search){//当中间值小于所查值时,则$mid左边的值都小于$search,此时要将$mid赋值给$low    
                $low=$mid+1;    
            }elseif($arr[$mid]>$search){//中间值大于所查值,则$mid右边的所有值都大于$search,此时要将$mid赋值给$height    
                $height=$mid-1;    
            }    
        }    
        return "查找失败";    
    }     
    //二分查找递归实现  (排序号的数组)  
    function binSearch2($arr,$low,$height,$k){    
        if($low<=$height){    
            $mid=floor(($low+$height)/2);//获取中间数    
            if($arr[$mid]==$k){    
                return $mid;    
            }elseif($arr[$mid]<$k){    
                return binSearch2($arr,$mid+1,$height,$k);    
            }elseif($arr[$mid]>$k){    
                return binSearch2($arr,$low,$mid-1,$k);    
            }    
        }    
        return -1;    
    }    
        
    //顺序查找    
    function seqSearch($arr,$k){    
        foreach($arr as $key=>$val){    
            if($val==$k){    
                return $key;    
            }    
        }    
        return -1;    
    }    
        
    $arr=array(1,2,3,4);    
    echo in_array(4,$arr).'<br/>';    
    echo binSearch($arr,4).'<br/>';    
    echo binSearch2($arr,0,4,4).'<br/>';    
    echo array_search(4,$arr).'<br/>';   
    $arr=array(1,3,4,2);    
    echo in_array(4,$arr).'<br/>';    
    echo seqSearch($arr,4).'<br/>'; 
    echo array_search(4,$arr);    
点赞