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 相关文章推荐
java直接调用python脚本的例子
Feb 16 Python
Python与Redis的连接教程
Apr 22 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
python开发之文件操作用法实例
Nov 13 Python
win系统下为Python3.5安装flask-mongoengine 库
Dec 20 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
Python数据类型之List列表实例详解
May 08 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
Jul 12 Python
Pycharm如何运行.py文件的方法步骤
Mar 03 Python
Python 列表反转显示的四种方法
Nov 16 Python
pytorch中的 .view()函数的用法介绍
Mar 17 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
PHP 高手之路(二)
2006/10/09 PHP
php中执行系统命令的方法
2015/03/21 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
JQuery 文本框使用小结
2010/05/22 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
js中document.referrer实现移动端返回上一页
2017/02/22 Javascript
深入浅析Nodejs的Http模块
2017/06/20 NodeJs
JS和JQuery实现雪花飘落效果
2017/11/30 jQuery
React Router V4使用指南(精讲)
2018/09/17 Javascript
vue: WebStorm设置快速编译运行的方法
2018/10/18 Javascript
vue-dplayer 视频播放器实例代码
2019/11/08 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
举例详解Python中threading模块的几个常用方法
2015/06/18 Python
Python的净值数据接口调用示例分享
2016/03/15 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
浅谈Python里面小数点精度的控制
2018/07/16 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Python requests模块cookie实例解析
2020/04/14 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
英国香水店:The Perfume Shop
2017/03/27 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
商场拾金不昧表扬信
2014/01/13 职场文书
保证书范文大全
2014/04/28 职场文书
学生检讨书范文
2014/10/30 职场文书
小学教师岗位职责
2015/04/02 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
护理心得体会范文
2016/01/22 职场文书
python中的sys模块和os模块
2022/03/20 Python
MySQL限制查询和数据排序介绍
2022/03/25 MySQL