快速排序

2018-05-11  本文已影响32人  大胡子商人
image.png

快速排序原理:在要排序的数字中取一个值,把大于这个这个值和小于这个值得数字分别放到数组里,在递归执行,执行取值,在把大于这个这个值和小于这个值得数字分别放到数组里,最后执行的时候数组就一个元素,执行效率快排平均效率O(nlogn),最好情况O(nlogn)每次取中间值得,最坏情况是当数组有序时,退化成O(n^2)


代码部分如下:

public function quickSort($data)
{
    $size = count($data);
    if($size>1) {
        $key = $data[0];
        $l = $r = [];
        for ($i = 1; $i < $size; $i++) {
            if ($data[$i] >= $key)
                $r[] = $data[$i];
            else
                $l[] = $data[$i];
        }
        $l_re = quickSort($l);
        $r_re = quickSort($r);

        return array_merge($l_re, [$key], $r_re);
    }
    else
        return $data;
}
上一篇 下一篇

猜你喜欢

热点阅读