算法图解阅读笔记-递归与快速排序算法

2018-10-23  本文已影响0人  zhaoxi_yu

递归

1 只是让解决方案更加清晰,本身并没有性能上的提升。
2 递归最主要的就是基线条件与递归条件。

快速排序

原理:选择待排序集中一个元素作为基点,将所有比基点元素大的元素划到一个结果集,将所有比基点元素小的元素划到另一个结果集,最后顺序合并小结果集,基点,大结果集。完成一次排序。对大小结果集中的元素循环上述处理,最终得到排序后的结果集。
快速排序的时间复杂度平均值为 O (n*log n) 最糟糕情况时间复杂度为O(N^2)

示例 递归实现

function quickSort($arr_info = array())
{
    if (sizeof($arr_info) < 2) {
        return $arr_info;
    }
    $mid = $arr_info[0];
    $max = array();
    $min = array();

    for ($i = 1; $i < sizeof($arr_info); $i++) {
        if ($arr_info[$i] >= $mid) {
            $max[] = $arr_info[$i];
        } else {
            $min[] = $arr_info[$i];
        }
    }
    return array_merge(quickSort($min), array($mid), quickSort($max));

}
上一篇下一篇

猜你喜欢

热点阅读