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 相关文章推荐
在php中使用sockets:从新闻组中获取文章
Oct 09 PHP
使用sockets:从新闻组中获取文章(二)
Oct 09 PHP
php获取某个目录大小的代码
Sep 10 PHP
使用session判断用户登录用户权限(超简单)
Jun 08 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
Aug 13 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
Zend Framework实现多服务器共享SESSION数据的方法
Mar 22 PHP
Smarty模板变量调节器用法分析
May 23 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
php经典趣味算法实例代码
Jan 21 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简单系统查询模块代码打包下载
2008/06/07 PHP
10条PHP高级技巧[修正版]
2011/08/02 PHP
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
php二维数组合并及去重复的方法
2015/03/04 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
PHP下SSL加密解密、验证、签名方法(很简单)
2020/06/28 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
jquery+json 通用三级联动下拉列表
2010/04/19 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
jQuery事件之键盘事件(ctrl+Enter回车键提交表单等)
2014/05/11 Javascript
BAT及各大互联网公司2014前端笔试面试题--JavaScript篇
2014/10/29 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
AngularJs 利用百度地图API 定位当前位置 获取地址信息
2017/01/18 Javascript
JS判断指定dom元素是否在屏幕内的方法实例
2017/01/23 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
react路由配置方式详解
2017/08/07 Javascript
AngularJS实现的获取焦点及失去焦点时的表单验证功能示例
2017/10/25 Javascript
bmob js-sdk 在vue中的使用教程
2018/01/21 Javascript
原生js检测页面加载完毕的实例
2018/09/11 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
python网络编程学习笔记(一)
2014/06/09 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
python实现微信接口(itchat)详细介绍
2017/10/23 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python输出第n个默尼森数的实现示例
2020/03/08 Python
Python脚本导出为exe程序的方法
2020/03/25 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
在html5的Canvas上绘制椭圆的几种方法总结
2013/01/07 HTML / CSS
物流仓储实习自我鉴定
2013/09/25 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
面试后的英文感谢信
2014/02/01 职场文书
优质护理心得体会
2016/01/22 职场文书
JS封装cavans多种滤镜组件
2022/02/15 Javascript
Python用any()函数检查字符串中的字母以及如何使用all()函数
2022/04/14 Python