二分查找,順序查找

/*
*順序查找
*/
function seqSearch($arr,$k){
    foreach($arr as $key=>$val){
        if($val==$k){
            return $key;
        }
    }
    return "meiyou";
}
/*
二分查找法
*/
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;  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章