PHP 查找算法

xiaoxiao2021-02-28  71

<?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);    
转载请注明原文地址: https://www.6miu.com/read-53114.html

最新回复(0)