二分查找,顺序查找

xiaoxiao2021-02-28  94

<?php /* *顺序查找 */ 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;   } 
转载请注明原文地址: https://www.6miu.com/read-53242.html

最新回复(0)