zl程序教程

您现在的位置是:首页 >  后端

当前栏目

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

2023-06-13 09:14:34 时间
复制代码代码如下:

<?php
/**
*快速排序quicksort
*
**/

functionsort_quick($arrData){
if(empty($arrData)||!is_array($arrData))returnfalse;

$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"filterleft:",print_r($arrLeft),"<br/>";
echo"filterright:",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);