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

yipeiwu_com6年前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弹出对话框技巧详细解读

许多程序员们运用PHP语言进行WEB开发。那么在网站中通常都会遇到对话框弹出等功能需求。下面我们就为大家详细介绍PHP弹出对话框的相关实现方法。 1. PHP弹出对话框 < &...

当前比较流行的两款PHP加密、解密工具Zend Guard和iconCube介绍

当前比较流行的两款PHP加密、解密工具Zend Guard和iconCube介绍

当前市场上较流行的对PHP进行上述加密授权的软件主要有二种: (1)Zend公司的ZendGuard。 (2)ionCube公司的ionCube PHP Encode。 ZendGuar...

php从数据库查询结果生成树形列表的方法

本文实例讲述了php从数据库查询结果生成树形列表的方法。分享给大家供大家参考。具体分析如下: 本代码可以从数据库读取数据生成一个类似于windows的资源管理器的树形列表 <&...

php $_ENV为空的原因分析

但有些朋友的$_ENV是空的,可能是原因是: 你的php.ini的variables_order值为"GPCS",也就是说系统在定义PHP预定义变量时的顺序是GET,POST,COOKI...

对于PHP 5.4 你必须要知道的

PHP 5.4来了,这是自5.3后的又一次主版本升级。此次升级改动较为显著,删除了一些过气儿的函数,带来了高达20%的速度提升和更少的内存使用。 新特性与改动此次更新的关键新特性,包括:...