php数据结构与算法(PHP描述) 快速排序 quick sort


Posted in PHP onJune 21, 2012
<?php 
/** 
* 快速排序 quick sort 
* 
**/ function sort_quick($arrData) { 
if(empty($arrData) || !is_array($arrData)) return false; 
$flag = $arrData[0]; 
$len = count($arrData) - 1; 
if($len == 0) return $arrData; // 如果只有一个数据的数组直接返回 
$arrLeft = array(); 
$arrRight = array(); 
$len_l = 0; 
$len_r = 0; 
for($i = 1; $i <= $len;$i++) { 
if($arrData[$i] < $flag) { 
$arrLeft[$len_l] = $arrData[$i]; // 小于的放左边 
$len_l++; 
} else { 
$arrRight[$len_r] = $arrData[$i]; // 大于等于的放右边 
$len_r++; 
} 
} 
// 合并数组 
$arrResult = array(); 
if($len_l) { 
$arrLeft = sort_quick($arrLeft); 
for($i = 0;$i <= $len_l - 1; $i++ ) { 
$arrResult[$i] = $arrLeft[$i]; 
} 
} 
$arrResult[$len_l] = $flag; 
$len_l++; 
if($len_r) { 
$arrRight = sort_quick($arrRight); 
for($i = 0;$i <= $len_r - 1; $i++ ) { 
$arrResult[$len_l] = $arrRight[$i]; 
$len_l++; 
} 
} 
echo "== ",$flag," ==========================================<br/>"; 
echo "data : ",print_r($arrData),"<br/>"; 
echo "filter left: ",print_r($arrLeft),"<br/>"; 
echo "filter right: ",print_r($arrRight),"<br/>"; 
echo "return : ",print_r($arrResult),"<br/>"; 
return $arrResult; 
} 
//$list = array(4,3,2,1,5,7,3,7); 
$list = array(4,51,6,73,2,5,9,33,50,3,4,6,1,4,67); 
$list = sort_quick($list); 
echo "<pre>";print_r($list);
PHP 相关文章推荐
apache+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 PHP
PHP 小心urldecode引发的SQL注入漏洞
Oct 27 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
php实现mysql数据库分表分段备份
Jun 18 PHP
PHP下载生成的csv文件及问题总结
Aug 06 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
PHP中的正则表达式实例详解
Apr 25 PHP
PHP检查端口是否可以被绑定的方法示例
Aug 09 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
PHP扩展类型及安装方式解析
Apr 27 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 #PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 #PHP
php后退一页表单内容保存实现方法
Jun 17 #PHP
php中使用接口实现工厂设计模式的代码
Jun 17 #PHP
php中jQuery插件autocomplate的简单使用笔记
Jun 14 #PHP
PHP的加密方式及原理
Jun 14 #PHP
php面向对象 字段的声明与使用
Jun 14 #PHP
You might like
php 全局变量范围分析
2009/08/07 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
php和asp语法上的区别总结
2019/05/12 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
javascript密码强度校验代码(两种方法)
2015/08/10 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
Highcharts入门之简介
2016/08/02 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
从零开始搭建vue移动端项目到上线的步骤
2018/10/15 Javascript
echarts多条折线图动态分层的实现方法
2019/05/24 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python改变日志(logging)存放位置的示例
2014/03/27 Python
Python实现的多线程端口扫描工具分享
2015/01/21 Python
Windows下将Python文件打包成.EXE可执行文件的方法
2018/08/03 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
pandas中read_csv的缺失值处理方式
2019/12/19 Python
python实现滑雪游戏
2020/02/22 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
自学考试自我鉴定范文
2013/09/26 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
工程质量保证书
2015/05/09 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
DQL数据查询语句使用示例
2022/12/24 MySQL