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读取目录下所有文件的代码
Jan 07 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
PHP的PSR规范中文版
Sep 28 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
thinkphp实现图片上传功能分享
Mar 04 PHP
一段实用的php验证码函数
May 19 PHP
对PHP依赖注入的理解实例分析
Oct 09 PHP
PHP实现登录搜狐广告获取广告联盟数据的方法【附demo源码】
Oct 14 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
Oct 21 PHP
php自动加载代码实例详解
Feb 26 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
Laravel框架中实现使用阿里云ACE缓存服务
2015/02/10 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
php通过pecl方式安装扩展的实例讲解
2018/02/02 PHP
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
js原型链原理看图说明
2012/07/07 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
jqGrid表格应用之新增与删除数据附源码下载
2015/12/02 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
2016/06/08 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
JavaScript编写开发动态时钟
2020/07/29 Javascript
python将人民币转换大写的脚本代码
2013/02/10 Python
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
Python如何给函数库增加日志功能
2020/08/04 Python
最新Python idle下载、安装与使用教程图文详解
2020/11/28 Python
整理HTML5中支持的URL编码与字符编码
2016/02/23 HTML / CSS
美国饼干礼物和美食甜点购买网站:Cheryl’s
2020/05/28 全球购物
园长自我鉴定
2013/10/06 职场文书
运动会入场词200字
2014/02/15 职场文书
初中差生评语
2014/12/29 职场文书
公司员工培训管理制度
2015/08/04 职场文书
简历自我评价范文
2019/04/24 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
MySQL实例精讲单行函数以及字符数学日期流程控制
2021/10/15 MySQL
Python中np.random.randint()参数详解及用法实例
2022/09/23 Python