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程序实例(通讯录)
Nov 29 Python
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
python操作mongodb根据_id查询数据的实现方法
May 20 Python
python基于pyDes库实现des加密的方法
Apr 29 Python
浅谈Django自定义模板标签template_tags的用处
Dec 20 Python
详解python读取和输出到txt
Mar 29 Python
python使用itchat模块给心爱的人每天发天气预报
Nov 25 Python
pytorch动态网络以及权重共享实例
Jan 06 Python
python 中的[:-1]和[::-1]的具体使用
Feb 13 Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
彻底解决pip下载pytorch慢的问题方法
Mar 01 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
第十二节 类的自动加载 [12]
2006/10/09 PHP
php下过滤HTML代码的函数
2007/12/10 PHP
Js 刷新框架页的代码
2010/04/13 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
javascript常用功能汇总
2015/07/05 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
ES6正则表达式的一些新功能总结
2017/05/09 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
JavaScript键盘事件常见用法实例分析
2019/01/03 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现的批量下载RFC文档
2015/03/10 Python
python在Windows8下获取本机ip地址的方法
2015/03/14 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
2018/01/04 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
python操作mysql代码总结
2018/06/01 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
python如何制作缩略图
2019/04/30 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
python PIL模块的基本使用
2020/09/29 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
html5 标签
2009/07/16 HTML / CSS
生产车间主管岗位职责
2013/12/28 职场文书
法学个人求职信范文
2014/01/27 职场文书
2014年向国旗敬礼活动方案
2014/09/27 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
python基础之函数的定义和调用
2021/10/24 Python