php数据结构与算法(PHP描述) 快速排序 quick sort

yipeiwu_com5年前PHP代码库
复制代码 代码如下:

<?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实现的数组转xml案例分析

本文实例讲述了php实现的数组转xml。分享给大家供大家参考,具体如下: 0x00 需求 最近要做百度、360、神马搜索的网站sitemap,三家的格式都是xml,然而具体的细节还有有差...

php使用PDO获取结果集的方法

本文实例讲述了php使用PDO获取结果集的方法。分享给大家供大家参考,具体如下: fetch()方法 fetch()方法用于获取结果集的下一行,语法如下: mixed PDOStatem...

phpadmin如何导入导出大数据文件及php.ini参数修改

最近遇到了数据库过大的时候用phpadmin导入的问题,新版本的phpadmin导入限定是8M,老版本的可能2M,我的数据库有几十兆这可怎么办呢? 首先如果你有独立服务器或vps的话可以...

php常用日期时间函数实例小结

本文实例讲述了php常用日期时间函数。分享给大家供大家参考,具体如下: 时间戳 时间戳我就不赘述了,手册里有,就是能精确的表示一个时间点。我在做项目的时候经常用时间戳来表示数据,这样比较...

使用array mutisort 实现按某字段对数据排序

array_multisort 的用法 一、先看最简单的情况。有两个数组:$arr1 = array(1,9,5);$arr2 = array(6,2,4);array_multisor...