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

递归

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));

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容