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_Flame(Version:Progress)的原代码
Oct 09 PHP
php 数组的创建、调用和更新实现代码
Mar 09 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
通过php添加xml文档内容的方法
Jan 23 PHP
joomla数据库操作示例代码
Jan 06 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
Sep 30 PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 PHP
PHP序列化的四种实现方法与横向对比
Nov 29 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
浅析PHP echo 和 print 语句
Jun 30 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中上传大体积文件时需要的设置
2006/10/09 PHP
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
jQuery $.get 的妙用 访问本地文本文件
2012/07/12 Javascript
JS判定是否原生方法
2013/07/22 Javascript
jquery replace方法去空格
2017/05/08 jQuery
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
[02:57]DOTA2亚洲邀请赛 SECRET战队出场宣传片
2015/02/07 DOTA
详解将Django部署到Centos7全攻略
2018/09/26 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
python实现吃苹果小游戏
2020/03/21 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Python限制内存和CPU使用量的方法(Unix系统适用)
2020/08/04 Python
学点简单的Django之第一个Django程序的实现
2021/02/24 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
HTML5 canvas基本绘图之图形变换
2016/06/27 HTML / CSS
Android笔试题总结
2014/11/29 面试题
社团文化节邀请函
2014/01/10 职场文书
教师党员一句话承诺
2014/03/28 职场文书
培训研修方案
2014/06/06 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
校车司机安全责任书
2015/05/11 职场文书
原告离婚代理词
2015/05/23 职场文书
超市主管竞聘书
2015/09/15 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
Redis过期数据是否会被立马删除
2022/07/23 Redis