PHP两种快速排序算法实例

 更新时间:2015年02月15日 11:00:37   投稿:junjie  
这篇文章主要介绍了PHP两种快速排序算法实例,本文直接给出实现代码,分别使用递归法、迭代法实现,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

虽然在PHP这样的web应用开发中,我们不是太强调排序的重要性,因为PHP自身已经带了例如sort()等这样强大的排序函数,但是在一些重要的场合,例如某些高并发的场合,我想排序算法的影响已经不能忽略。所以在此介绍递归排序和迭代排序。

递归法

/**
* 递归法实现的快速排序
*/
function quicksort($seq)
{
    $k = $seq[0];
    $x = array();
    $y = array();
    for($i=1; $i< $_size; $i++) {
      if($seq[$i] <= $k) {
        $x[] = $seq[$i];
      } else {
        $y[] = $seq[$i];
      }
    }
    $x = quicksort($x);
    $y = quicksort($y);
    return array_merge($x, array($k), $y);
  } else {
    return $seq;
  }
}

迭代法:

/**
* 迭代法的快速排序
*/
function quicksortx(&$seq)
{
  $stack = array($seq);
  $sort = array();
  while ($stack) {
    $arr = array_pop($stack);
    if(count($arr) <= 1) {
      if(count($arr) == 1) {
        $sort[] = &$arr[0];
      }
      continue;
    }
    $k = $arr[0];
    $x = array();
    $y = array();
    $_size = count($arr);
    for($i =1 ;$i < $_size; $i++) {
      if($arr[$i] <= $k) {
        $x[] = &$arr[$i];
      } else {
        $y[] = &$arr[$i];
      }
    }
    !empty($y) && array_push($stack, $y);
    array_push($stack, array($arr[0]));
    !empty($x) && array_push($stack, $x);
  }
  return $sort;
}

使用:

/**
*产生一个随机数组
*/
for($i=0;$i<5;$i++){
  $testArr[]=mt_rand(0,100);
}
var_dump($testArr);
var_dump(quicksort($testArr));

var_dump(quicksortx($testArr));

相关文章

  • ThinkPHP连接数据库操作示例【基于DSN方式和数组传参的方式】

    ThinkPHP连接数据库操作示例【基于DSN方式和数组传参的方式】

    这篇文章主要介绍了ThinkPHP连接数据库操作,结合实例形式分析了thinkPHP基于DSN方式和数组传参的方式进行数据库连接的实现步骤与属性设置、控制器、模板使用等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • PHP生成(支持多模板)二维码海报代码

    PHP生成(支持多模板)二维码海报代码

    本篇文章给大家分享了PHP生成支持多模板二维码海报代码,如果大家对此有需要,可以跟着参考学习下。
    2018-04-04
  • php简单实现MVC

    php简单实现MVC

    文章简单介绍了MVC的概念,php中的MVC,使用MVC的原因,以及如何简单是先MVC,非常详细,这里推荐给大家。
    2015-02-02
  • PHP递归遍历指定文件夹内的文件实现方法

    PHP递归遍历指定文件夹内的文件实现方法

    下面小编就为大家带来一篇PHP递归遍历指定文件夹内的文件实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • php制作的简单验证码识别代码

    php制作的简单验证码识别代码

    近期研究一些突破验证码方面的知识,记录下来。一方面算是对这几天学习知识的总结帮助自己理解;另一方面希望对研究这方面的技术同学有所帮助;另外也希望引起网站管理者的注意,在提供验证码时多些考虑进去。由于刚刚接触这方面的知识,理解比较浅显,有错误再所难免
    2016-01-01
  • php处理抢购类功能的高并发请求

    php处理抢购类功能的高并发请求

    这篇文章主要为大家详细介绍了php处理抢购类功能的高并发请求,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • typecho插件编写教程(三):保存配置

    typecho插件编写教程(三):保存配置

    这篇文章主要介绍了typecho插件编写教程(三):保存配置,本文讲解了完善方法、如何保存配置、使用需要注意的问题等内容,需要的朋友可以参考下
    2015-05-05
  • Zend?Framework框架的Filter过滤器使用示例

    Zend?Framework框架的Filter过滤器使用示例

    这篇文章主要介绍了Zend?Framework框架的Filter过滤器使用示例,代码中有注释,需要的朋友可以参考下
    2014-03-03
  • CodeIgniter使用smtp服务发送html邮件的方法

    CodeIgniter使用smtp服务发送html邮件的方法

    这篇文章主要介绍了CodeIgniter使用smtp服务发送html邮件的方法,涉及CodeIgniter中email类的使用技巧,需要的朋友可以参考下
    2015-06-06
  • Yii框架连表查询操作示例

    Yii框架连表查询操作示例

    这篇文章主要介绍了Yii框架连表查询操作,结合实例形式分析了Yii框架连表查询常用方法及相关使用技巧,需要的朋友可以参考下
    2019-09-09

最新评论

?


http://www.vxiaotou.com