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字符串的encode与decode研究心得乱码问题解决方法
Mar 23 Python
Hadoop中的Python框架的使用指南
Apr 22 Python
python通过函数属性实现全局变量的方法
May 16 Python
python实现查找两个字符串中相同字符并输出的方法
Jul 11 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
Python模拟用户登录验证
Sep 11 Python
Python学习笔记之if语句的使用示例
Oct 23 Python
windows下Virtualenvwrapper安装教程
Dec 13 Python
Python获取二维矩阵每列最大值的方法
Apr 03 Python
Python基于xlrd模块操作Excel的方法示例
Jun 21 Python
python实现连续图文识别
Dec 18 Python
Django模板标签{% for %}循环,获取制定条数据实例
May 14 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
玩转虚拟域名◎+ .
2006/10/09 PHP
php采集速度探究总结(原创)
2008/04/18 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
php把数组值转换成键的方法
2015/07/13 PHP
cakephp2.X多表联合查询join及使用分页查询的方法
2017/02/23 PHP
php实现微信扫码支付
2017/03/26 PHP
PHP开发中解决并发问题的几种实现方法分析
2017/11/13 PHP
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
2019/07/22 jQuery
js中复选框的取值及赋值示例详解
2020/10/18 Javascript
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
Django之模板层的实现代码
2019/09/09 Python
Python新手学习标准库模块命名
2020/05/29 Python
python如何输出反斜杠
2020/06/18 Python
如何卸载python插件
2020/07/08 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
PHP面试题附答案
2015/11/28 面试题
大学生专业个人学习的自我评价
2013/10/26 职场文书
幼儿园校车司机的岗位职责
2014/01/30 职场文书
大学生全国两会报告感想
2014/03/17 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
2014年党员自我评价材料
2014/09/22 职场文书
干部作风建设个人剖析材料
2014/10/11 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书