PHP两种快速排序算法实例

 更新时间:2015年02月15日 11:00:37   投稿:junjie  
这篇文章主要介绍了PHP两种快速排序算法实例,本文直接给出实现代码,分别使用递归法、迭代法实现,需要的朋友可以参考下

虽然在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));

相关文章

  • PHP实现的连贯操作、链式操作实例

    PHP实现的连贯操作、链式操作实例

    这篇文章主要介绍了PHP实现的连贯操作、链式操作实例,本文用一个数据库操作类作为实例,需要的朋友可以参考下
    2014-07-07
  • thinkPHP5框架导出Excel文件简单操作示例

    thinkPHP5框架导出Excel文件简单操作示例

    这篇文章主要介绍了thinkPHP5框架导出Excel文件简单操作,结合实例形式分析了thinkPHP5框架安装及使用PHPExcel插件实现导出Excel格式文件的相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • PHP图片上传代码

    PHP图片上传代码

    PHP图片上传有好多种方法,今天给大家提供一个简单的方法。
    2013-11-11
  • Laravel 集成微信用户登录和绑定的实现

    Laravel 集成微信用户登录和绑定的实现

    这篇文章主要介绍了Laravel 集成微信用户登录和绑定的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • thinkPHP批量删除的实现方法分析

    thinkPHP批量删除的实现方法分析

    这篇文章主要介绍了thinkPHP批量删除的实现方法,结合实例形式分析了thinkPHP实现批量删除数据的数据库及模板操作相关技巧,需要的朋友可以参考下
    2016-11-11
  • php读取3389的脚本

    php读取3389的脚本

    通过php获取系统3389端口信息的脚本,这里只分享实现方法,不建议非法用途
    2014-05-05
  • 微信公众号模板消息群发php代码示例

    微信公众号模板消息群发php代码示例

    这篇文章主要为大家详细介绍了微信公众号模板消息群发php代码示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Zend Framework动作助手Url用法详解

    Zend Framework动作助手Url用法详解

    这篇文章主要介绍了Zend Framework动作助手Url用法,结合实例形式分析了动作助手Url的功能,定义与相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • php简单中奖算法(实例)

    php简单中奖算法(实例)

    下面小编就为大家带来一篇php简单中奖算法(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Thinkphp5.0框架视图view的模板布局用法分析

    Thinkphp5.0框架视图view的模板布局用法分析

    这篇文章主要介绍了Thinkphp5.0框架视图view的模板布局用法,结合实例形式分析了thinkPHP5模板包含、继承、layout布局等相关操作技巧,需要的朋友可以参考下
    2019-10-10

最新评论