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中日期和时间格式化输出的方法小结
Mar 19 Python
Python解析json文件相关知识学习
Mar 01 Python
Python实现统计代码行的方法分析
Jul 12 Python
django框架自定义模板标签(template tag)操作示例
Jun 24 Python
解决Django中多条件查询的问题
Jul 18 Python
在pycharm中显示python画的图方法
Aug 31 Python
Python常用编译器原理及特点解析
Mar 23 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
python如何导出微信公众号文章方法详解
Aug 31 Python
python GUI计算器的实现
Oct 09 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
python删除csv文件的行列
Apr 06 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 substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
提升你网站水平的jQuery插件集合推荐
2011/04/19 Javascript
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
jQuery中after()方法用法实例
2014/12/25 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
JS实现alert中显示换行的方法
2015/12/17 Javascript
js实现消息滚动效果
2017/01/18 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
JS实现图片预览的两种方式
2017/06/27 Javascript
浅析vue深复制
2018/01/29 Javascript
JavaScript函数节流和函数去抖知识点学习
2018/07/31 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
Nodejs实现多文件夹文件同步
2018/10/17 NodeJs
基于postman获取动态数据过程详解
2020/09/08 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
Python+django实现简单的文件上传
2016/08/17 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
英国羊绒服装购物网站:Pure Collection
2018/10/22 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
环保倡议书500字
2014/05/15 职场文书
国际贸易专业求职信
2014/06/04 职场文书
元旦趣味活动方案
2014/08/22 职场文书
升职感谢信
2015/01/22 职场文书
为自己工作观后感
2015/06/11 职场文书
董事长年会致辞
2015/07/29 职场文书
初中数学课堂教学反思
2016/02/17 职场文书
2016个人先进事迹材料范文
2016/03/01 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书