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中if __name__ == &quot;__main__&quot;详细解释
Oct 21 Python
python实现超简单端口转发的方法
Mar 13 Python
Python三级菜单的实例
Sep 13 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
解决安装python库时windows error5 报错的问题
Oct 21 Python
python 检查文件mime类型的方法
Dec 08 Python
Python使用scrapy爬取阳光热线问政平台过程解析
Aug 14 Python
python生成器/yield协程/gevent写简单的图片下载器功能示例
Oct 28 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
python3实现简单飞机大战
Nov 29 Python
python基础之类属性和实例属性
Oct 24 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简单系统查询模块代码打包下载
2008/06/07 PHP
php中使用__autoload()自动加载未定义类的实现代码
2013/02/06 PHP
php时间戳转换的示例
2014/03/31 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
28个JS验证函数收集
2010/03/02 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
浅谈javascript中的三种弹窗
2016/10/21 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
nodejs基于WS模块实现WebSocket聊天功能的方法
2018/01/12 NodeJs
vue中nextTick用法实例
2019/09/11 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Pytorch释放显存占用方式
2020/01/13 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
python3 kubernetes api的使用示例
2021/01/12 Python
使用canvas对多图片拼合并导出图片的方法
2018/08/28 HTML / CSS
卡骆驰新加坡官网:Crocs新加坡
2018/06/12 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
《小石潭记》教学反思
2014/02/13 职场文书
党员公开承诺事项
2014/03/25 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
运动会表扬稿
2015/01/16 职场文书
婚宴父亲致辞
2015/07/27 职场文书
2019旅游导游工作总结
2019/06/27 职场文书
八年级作文之一起的走过日子
2019/09/17 职场文书
Python 如何实现文件自动去重
2021/06/02 Python
python使用pymysql模块操作MySQL
2021/06/16 Python