function quickSort($arr)
{
$count = count($arr); //統計出數組的長度
if ($count <= 1) { // 如果個數爲空或者1,則原樣返回數組
return $arr;
}
$index = $arr[0]; // 把第一個元素作爲標記
$left = []; //定義一個左空數組
$right = []; //定義一個有空數組
for ($i = 1; $i < $count; $i++) { //從數組的第二數開始與第一個標記元素作比較
if ($arr[$i] < $index) { //如果小於第一個標記元素則放進left數組
$left[] = $arr[$i];
} else { //如果大於第一個標記元素則放進right數組
$right[] = $arr[$i];
}
}
$left = quickSort($left); //把left數組再看成一個新參數,再遞歸調用,執行以上的排序
$right = quickSort($right); //把right數組再看成一個新參數,再遞歸調用,執行以上的排序
return array_merge($left, [$arr[0]], $right); //最後把每一次的左數組、標記元素、右數組拼接成一個新數組
}
$arrtest=[12,43,54,33,23,14,44,53,10,3,56]; //測試數組
$res=quickSort($arrtest);
var_dump($res);
D:\wamp64\www\test\kuaisupaixu.php:29:
array (size=11)
0 => int 3
1 => int 10
2 => int 12
3 => int 14
4 => int 23
5 => int 33
6 => int 43
7 => int 44
8 => int 53
9 => int 54
10 => int 56