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 adodb操作mysql数据库
Mar 19 PHP
PHP 程序员也要学会使用“异常”
Jun 16 PHP
PHP得到某段时间区间的时间戳 php定时任务
Apr 12 PHP
PHP防止post重复提交数据的简单例子
Jun 07 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
php遍历CSV类实例
Apr 14 PHP
php根据日期显示所在星座的方法
Jul 13 PHP
PHP框架Laravel学习心得体会
Oct 28 PHP
Laravel框架生命周期与原理分析
Jun 12 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
Mar 23 PHP
TP5框架安全机制实例分析
Apr 05 PHP
PHP实现计算器小功能
Aug 28 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/04/09 PHP
php 函数中使用static的说明
2012/06/01 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
JQuery插件Style定制化方法的分析与比较
2012/05/03 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
js实现按钮开关单机下拉菜单效果
2018/11/22 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
Python实现登录人人网并抓取新鲜事的方法
2015/05/11 Python
Python用模块pytz来转换时区
2016/08/19 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
Atom的python插件和常用插件说明
2018/07/08 Python
selenium跳过webdriver检测并模拟登录淘宝
2019/06/12 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
django-csrf使用和禁用方式
2020/03/13 Python
使用python计算三角形的斜边例子
2020/04/15 Python
基于python模拟TCP3次握手连接及发送数据
2020/11/06 Python
css sprite简单实例
2016/05/23 HTML / CSS
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
大学生个人求职信范文
2013/09/21 职场文书
生态学毕业生自荐信
2013/10/27 职场文书
元宵节主持词
2014/03/25 职场文书
职务任命书范本
2014/06/05 职场文书
竞选学委演讲稿
2014/09/13 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
武当山导游词
2015/02/03 职场文书
2015年车间管理工作总结
2015/07/23 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js