/**
* 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; // If there is only one data array, return directly
$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]; // Smaller ones are placed on the left
$len_l++;
} else {
$ arrRight[$len_r] = $arrData[$i]; // Place greater than or equal to the right
$len_r++;
}
}
// Merge arrays
$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," ================== ========================
";
echo "data : ",print_r($arrData),"< br/>";
echo "filter left: ",print_r($arrLeft),"
";
echo "filter right: ",print_r($arrRight),"< br/>";
echo "return : ",print_r($arrResult),"
";
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 "
";print_r($list);