《算法图解》第四章——快速排序

本文介绍了分而治之的策略,并通过快速排序的实例详细解析了这一思想。快速排序的基线条件是数组为空或只包含一个元素,通过选取基准值将数组分为两部分,递归排序。大O表示法中,快速排序的平均时间复杂度为O(n log n),最坏情况为O(n^2)。文中强调了常量在不同复杂度级别中的影响,以及在快速排序中随机选取基准值的重要性。
摘要由CSDN通过智能技术生成

书中言:快速排序使用分而治之的策略,是一种优雅的排序算法。深以为然~

第四章:1.介绍了分而治之的思想;2.介绍与解释了快速排序;3.填了大O表示法的坑

  • 分而治之

分而治之:一种著名的递归式问题解决方法。

讲述三个例子来引入该思想。1.农场主分割田,要求将地皮均匀地分成方块,且分出的方块尽可能大;2.求一个数字数组的元素之和;3.男猪脚:快速排序

  1. 找出基线条件,条件必须尽可能简单

  2. 不断将问题分解或者缩小规模,直到符合基线条件

分田的例子中,将一条边是另一条边的整数倍作为基线条件,递归条件为最小边是所切割的最大正方形边。具体看书很容易明白。

第二个例子相当于用递归的思想写出求和公式sum。作者是如何思考的,先找基线条件,他以经验告诉我们,一般数组类的问题,其基线条件都为数组为空或者为只包含一个元素。见下图:

如何找递归条件不断把问题循环下去,把问题慢慢分解呢?我们想到达到基线条件时数组最多为一个元素,那上一轮递归中呢?那得至少是两个元素吧,姑且算作两个,那再上一轮至少得是3个......我们想到了,每次递归我都摘出来一个数,也就是取出一个数,那么让其他数组去进行下面的递归。摘出来的那个数一般取第一个幸运儿[0]。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值