快速排序是一种高效的排序算法,其基本思想是通过一趟排序将待排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
以下是使用PHP实现快速排序的代码:
function quickSort($array) { if(count($array) < 2){ return $array; } $left = $right = array(); reset($array); $pivot_key = key($array); $pivot = array_shift($array); foreach($array as $k=>$v){ if($v < $pivot){ $left[$k] = $v; }else{ $right[$k] = $v; } } return array_merge(quickSort($left), array($pivot_key=>$pivot), quickSort($right)); } $array = array(3,6,8,10,1,2,1); print_r(quickSort($array));
在这段代码中,我们首先检查数组的长度,如果长度小于2,那么就直接返回数组,因为长度为1或0的数组已经是有序的,然后我们选择一个基准值(这里我们选择的是数组的第一个元素),并将数组分为两部分,一部分是所有小于基准值的元素,另一部分是所有大于或等于基准值的元素,然后我们对这两部分分别进行快速排序,最后将结果合并在一起。
这段代码的时间复杂度为O(nlogn),空间复杂度为O(logn),是一种非常高效的排序算法。
还没有评论,来说两句吧...