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中常用的预定义变量小结
May 09 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
php笔记之:AOP的应用
Apr 24 PHP
php多用户读写文件冲突的解决办法
Nov 06 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
PHP采用XML-RPC构造Web Service实例教程
Jul 16 PHP
4种PHP异步执行的常用方式
Dec 24 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
Laravel网站打开速度优化的方法汇总
Jul 16 PHP
PHP高并发和大流量解决方案整理
Dec 24 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
10条PHP编程习惯助你找工作
2008/09/29 PHP
php设计模式 Composite (组合模式)
2011/06/26 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
php通过array_merge()函数合并两个数组的方法
2015/03/18 PHP
php无限级分类实现方法分析
2016/10/19 PHP
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
一些常用弹出窗口/拖放/异步文件上传等实用代码
2013/01/06 Javascript
jquery获取当前点击对象的value方法
2014/02/28 Javascript
常用jQuery选择器总结
2014/07/11 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
在Python中使用第三方模块的教程
2015/04/27 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python实现的多线程同步与互斥锁功能示例
2017/11/30 Python
为什么Python中没有&quot;a++&quot;这种写法
2018/11/27 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python变量的作用域是什么
2020/05/26 Python
Python爬取网页信息的示例
2020/09/24 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
中药学自荐信
2014/06/15 职场文书
2014年骨干教师工作总结
2014/12/19 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
如何书写读后感?(附范文)
2019/07/26 职场文书
Redis实现订单自动过期功能的示例代码
2021/05/08 Redis
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android