php使用递归与迭代实现快速排序示例


Posted in Python onJanuary 23, 2014
/**
 * 递归法实现的快速排序
 * @param $seq
 * @return array
 */
function quicksort($seq)
{
    if (count($seq) > 1) {
        $k = $seq[0];
        $x = array();
        $y = array();
        $_size = count($seq); //do not use count($seq) in loop for.
        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;
    }
}
/**用迭代实现
 * @param $seq
 * @return array
 */
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;
}
//$testArr = array(5545, 5, 6, 7675, 100, 9, 233, 566, 789, 456, 23, 55, 7, 4, 343, 564, 5, 45657, 8, 998, 9, 34, 34, 55, 6, 5, 6433, 67, 6, 6766, 4, 2, 42, 25634, 34343, 3, 3, 454, 4, 65, 6678, 57, 5455);
for($i=0;$i<20;$i++){
    $testArr[]=mt_rand(0,10000);
}
//var_dump($testArr);
echo count($testArr).'<br>';
$start=microtime();
echo count(quicksort($testArr)).'<br>';
echo microtime()-$start.'<br>';
var_dump(quicksort($testArr));
echo '------------------------------------------------------------------------<br>';
echo count($testArr).'<br>';
$start=microtime();
echo count(quicksortX($testArr)).'<br>';
echo microtime()-$start.'<br>';
var_dump(quicksortX($testArr));
Python 相关文章推荐
python 获取et和excel的版本号
Apr 09 Python
简单的通用表达式求10乘阶示例
Mar 03 Python
python进程管理工具supervisor使用实例
Sep 17 Python
Python实现的监测服务器硬盘使用率脚本分享
Nov 07 Python
如何将python中的List转化成dictionary
Aug 15 Python
Python机器学习之SVM支持向量机
Dec 27 Python
pandas 选择某几列的方法
Jul 03 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
实例详解python函数的对象、函数嵌套、名称空间和作用域
May 31 Python
用Python获取摄像头并实时控制人脸的实现示例
Jul 11 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
解决Python import .pyd 可能遇到路径的问题
Mar 04 Python
python实现批量转换文件编码(批转换编码示例)
Jan 23 #Python
python写的一个文本编辑器
Jan 23 #Python
python生成指定长度的随机数密码
Jan 23 #Python
python使用beautifulsoup从爱奇艺网抓取视频播放
Jan 23 #Python
python3使用urllib示例取googletranslate(谷歌翻译)
Jan 23 #Python
pyside写ui界面入门示例
Jan 22 #Python
pyqt和pyside开发图形化界面
Jan 22 #Python
You might like
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
php实现HTML实体编号与非ASCII字符串相互转换类实例
2016/11/02 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
JS实现图片预加载无需等待
2012/12/21 Javascript
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
Extjs中通过Tree加载右侧TabPanel具体实现
2013/05/05 Javascript
js中判断用户输入的值是否为空的简单实例
2013/12/23 Javascript
javascript操作referer详细解析
2014/03/10 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
使用vue-cli创建项目的图文教程(新手入门篇)
2018/05/02 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
Angular 2使用路由自定义弹出组件toast操作示例
2019/05/10 Javascript
layui树形菜单动态遍历的例子
2019/09/23 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
vue el-table实现自定义表头
2019/12/11 Javascript
基于canvasJS在PHP中制作动态图表
2020/05/30 Javascript
Python开发之快速搭建自动回复微信公众号功能
2016/04/22 Python
Python实现的选择排序算法示例
2017/11/29 Python
python 输入一个数n,求n个数求乘或求和的实例
2018/11/13 Python
简单了解python高阶函数map/reduce
2019/06/28 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python对wav文件的重采样实例
2020/02/25 Python
python编写实现抽奖器
2020/09/10 Python
AmazeUI 图标的示例代码
2020/08/13 HTML / CSS
一份全面的PHP面试问题考卷
2012/07/15 面试题
大学生活学习的自我评价
2013/12/03 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
应届毕业生自荐书
2014/06/18 职场文书
先进教师事迹材料
2014/12/16 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书