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计算圆周长、面积、球体体积并画出圆
Apr 08 Python
用Python编写简单的微博爬虫
Mar 04 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
Python闭包函数定义与用法分析
Jul 20 Python
python 从文件夹抽取图片另存的方法
Dec 04 Python
Python实现的字典排序操作示例【按键名key与键值value排序】
Dec 21 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 Python
利用django创建一个简易的博客网站的示例
Sep 29 Python
python分布式爬虫中消息队列知识点详解
Nov 26 Python
浅谈Selenium 控制浏览器的常用方法
Dec 04 Python
Python用Jira库来操作Jira
Dec 28 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
手冲咖啡应该是现代精品咖啡店的必备选项吗?
2021/03/03 冲泡冲煮
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
js代码实现微博导航栏
2015/07/30 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
laravel中命名路由的使用方法
2017/02/24 PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
2019/02/28 PHP
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
浅谈javascript的call()、apply()、bind()的用法
2016/02/21 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
Node 使用express-http-proxy 做api网关的实现
2020/10/15 Javascript
python删除特定文件的方法
2015/07/30 Python
Python获取指定文件夹下的文件名的方法
2018/02/06 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python用input输入列表的实例代码
2020/02/07 Python
解决keras使用cov1D函数的输入问题
2020/06/29 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
应届毕业生求职信范文
2013/12/18 职场文书
结婚周年感言
2014/02/24 职场文书
空气的环保标语
2014/06/12 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python
Spring Boot优化后启动速度快到飞起技巧示例
2022/07/23 Java/Android