快排很简单
要素:
- 找到一个基准值
- for循环比较大小
- 递归操作
上代码
$arr = array(1, 5, 7, 3, 4, 5, 7, 8, 2, 3, 1, 5);
$res = kp_sort($arr);
print_r($res);
function kp_sort($arr)
{
// 判断数组是否符合要求
if (!isset($arr) || count($arr) < 2) {
return $arr;
}
$left = $right = array();
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i] < $arr[0]) {
$left[] = $arr[$i];
} else {
$right[] = $arr[$i];
}
}
$left = kp_sort($left);
$right = kp_sort($right);
// 正序
// return array_merge($left, array($arr[0]), $right);
// 倒序
return array_merge($right, array($arr[0]), $left);
}