快速排序属于交换排序,是一种不稳定排序,平均时间复杂度为
O(nlog2^n)
,最好情况时间复杂度为O(nlog2^n)
,最坏情况时间复杂度为O(n^2)
。
<?php
function quickSort($array)
{
//判断参数是否是一个数组
if (!is_array($array)) return false;
//递归出口:数组长度为1,直接返回数组
$length = count($array);
if ($length <= 1) return $array;
//数组元素有多个,则定义两个空数组
$left = $right = [];
//使用for循环进行遍历,把第一个元素当做比较的对象
for ($i = 1; $i < $length; $i++)
{
//判断当前元素的大小
if ($array[$i] < $array[0]){
$left[] = $array[$i];
} else {
$right[] = $array[$i];
}
}
//递归调用
$left = quickSort($left);
$right = quickSort($right);
//将所有的结果合并
return array_merge($left, [$array[0]], $right);
}
$array = [1, 3, 5, 18, 9, 2, 4, 6, 5, 0, 10, 29, 15];
print_r(quickSort($array));