php数据结构与算法(PHP描述) 快速排序 quick sort
程序员文章站
2022-11-27 15:20:19
复制代码 代码如下:
<?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
/**
* 快速排序 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描述) 查找与二分法查找
-
php数据结构与算法(PHP描述) 快速排序 quick sort
-
php快速排序算法(递归排序与迭代排序)的例子
-
cancelbubble PHP 数据结构 算法描述 冒泡排序 bubble sort
-
php数据结构与算法(PHP描述) 查找与二分法查找
-
php数据结构与算法(PHP描述) 快速排序 quick sort_PHP教程
-
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
-
php数据结构与算法(PHP描述) 查找与二分法查找_PHP
-
php数据结构与算法(PHP描述) 查找与二分法查找_PHP
-
php数据结构与算法(PHP描述) 查找与二分法查找