• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP常用算法

php 搞代码 3年前 (2022-01-22) 12次浏览 已收录 0个评论

在日常的PHP开发环境中,我们可以通过一些常用的PHP算法,来更有效的解决一些问题,或者说通过知道了解一些算法,掌握这些算法的核心思想,PHP的问题也就迎刃而解。

一、冒泡排序

基本思想

对需要排序的数组从后往前(逆序)进行多遍的扫描,当发现相邻的两个数值的次序与排序要求的规则不一致时,就将这两个数值进行交换。这样比较小(大)的数值就将逐渐从后面向前面移动。

//冒泡排序

<?php   function mysort($arr)  {    for($i = 0; $i < count($arr); $i++)    {      $isSort = false;      for ($j=0; $j< count($arr) - $i - 1; $j++)       {        if($arr[$j] < $arr[$j+1])        {          $isSort = true;          $temp = $arr[$j];          $arr[$j] = $arr[$j+1];          $arr[$j+1] = $temp ;        }      }      if($isSort)      {        break;      }    }    return $arr;  }   $arr = array(3,1,2);  var_dump(mysort($arr));?>

二、快速排序

基本思想

在数组中挑出一个元素(多为第一个)作为标尺,扫描一遍数组将比标尺小的元素排在标尺之前,将所有比标尺大的元素排在标尺之后,通过递归将各子序列分别划分为更小的序列直到所有的序列顺序一致。

//快速排序

<?php  //快速排序    function quick_sort($arr)     {      //先判断是否需要继续进行      $length = count($arr);      if($length <= 1)       {        return $arr;      }           $base_num = $arr[0];//选择一个标尺 选择第一个元素       //初始化两个数组      $left_array = array();//小于标尺的      $right_array = array();//大于标尺的      for($i=1; $i<$length; $i++)       {      //遍历 除了标尺外的所有元素,按照大小关系放入两个数组内        if($base_num > $arr[$i])         {          //放入左边数组          $left_array[] = $arr[$i];        }         else        {          //放入右边          $right_array[] = $arr[$i];        }      }      //再分别对 左边 和 右边的数组进行相同的排序处理方式      //递归<em style="color:transparent">本@文来源[email protected]搞@^&代*@码网(</em><q>搞代gaodaima码</q>调用这个函数,并记录结果      $left_array = quick_sort($left_array);      $right_array = quick_sort($right_array);      //合并左边 标尺 右边      return array_merge($left_array, array($base_num), $right_array);    }     $arr = array(3,1,2);    var_dump(quick_sort($arr)); ?>

三、二分查找

基本思想

假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。(数据量大的时候使用)

//二分查找

<?php  //二分查找  function bin_search($arr,$low,$high,$k)  {    if($low <= $high)    {      $mid = intval(($low + $high)/2);      if($arr[$mid] == $k)      {        return $mid;      }      else if($k < $arr[$mid])      {        return bin_search($arr,$low,$mid-1,$k);      }      else      {        return bin_search($arr,$mid+1,$high,$k);      }    }    return -1;  }   $arr = array(1,2,3,4,5,6,7,8,9,10);   print(bin_search($arr,0,9,3));?>

以上是PHP开发中比较常用的算法分享给大家,希望能够帮助大家。

相关文章

PHP常用算法和数据结构示例

以上就是PHP常用算法的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP常用算法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址