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图片上传类带图片显示
Nov 25 PHP
php获取某个目录大小的代码
Sep 10 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
跟我学Laravel之视图 &amp; Response
Oct 15 PHP
thinkphp特殊标签用法概述
Nov 24 PHP
PHP添加图片水印、压缩、剪切的封装类
Aug 17 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
PHP使用mkdir创建多级目录的方法
Dec 22 PHP
详解WordPress中添加和执行动作的函数使用方法
Dec 29 PHP
深入理解PHP之源码目录结构与功能说明
Jun 01 PHP
Thinkphp整合阿里云OSS图片上传实例代码
Apr 28 PHP
php/JS实现的生成随机密码(验证码)功能示例
Jun 06 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
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
如何使用PHP对网站验证码进行破解
2015/09/17 PHP
CI框架源码解读之URI.php中_fetch_uri_string()函数用法分析
2016/05/18 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
PHP中cookie知识点学习
2018/05/06 PHP
js玩一玩WSH吧
2007/02/23 Javascript
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
JQuery 学习技巧总结
2010/05/21 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
jQuery简单实现图片预加载
2015/04/20 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
Python制作CSDN免积分下载器
2015/03/10 Python
Python fileinput模块使用实例
2015/05/28 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
pyspark 随机森林的实现
2020/04/24 Python
记录模型训练时loss值的变化情况
2020/06/16 Python
Python生成器generator原理及用法解析
2020/07/20 Python
如何通过安装HomeBrew来安装Python3
2020/12/23 Python
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
IE9下html5初试小刀
2010/09/21 HTML / CSS
市级优秀班主任事迹材料
2014/05/13 职场文书
超市开店计划书
2014/09/15 职场文书
2015年环卫工作总结
2015/04/28 职场文书
不同意离婚代理词
2015/05/23 职场文书
丧事答谢词大全
2015/09/30 职场文书
装修安全责任协议书
2016/03/22 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
Python可变集合和不可变集合的构造方法大全
2021/12/06 Python