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的函数嵌套的使用方法
Jan 24 Python
Python中的rfind()方法使用详解
May 19 Python
Python实现递归遍历文件夹并删除文件
Apr 18 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
对python中的for循环和range内置函数详解
Apr 17 Python
详解Python3的TFTP文件传输
Jun 26 Python
python安装pil库方法及代码
Jun 25 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
Tensorflow矩阵运算实例(矩阵相乘,点乘,行/列累加)
Feb 05 Python
Python如何快速找到多个字典中的公共键(key)
Apr 29 Python
讲解Python实例练习逆序输出字符串
May 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数组 为文章加关键字连接 文章内容自动加链接
2011/12/29 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
30个php操作redis常用方法代码例子
2014/07/05 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
2015/12/18 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
jquery $.getJSON()跨域请求
2011/12/21 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
angularjs实现搜索的关键字在正文中高亮出来
2017/06/13 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
Nodejs中怎么实现函数的串行执行
2019/03/02 NodeJs
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
Python设计实现的计算器功能完整实例
2017/08/18 Python
Python优先队列实现方法示例
2017/09/21 Python
通过python+selenium3实现浏览器刷简书文章阅读量
2017/12/26 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
Python发起请求提示UnicodeEncodeError错误代码解决方法
2020/04/21 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
HTML5 声明兼容IE的写法
2011/05/16 HTML / CSS
办公室秘书自我鉴定
2014/01/18 职场文书
大学班长的职责
2014/01/27 职场文书
服务员岗位责任制
2014/02/11 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
社区党员干部承诺书
2015/05/04 职场文书
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL