图解算法读书笔记第四章

快速排序

分而治之(divide and conquer,D&C)-一种著名的递归式问题解决方法

快速排序的思路就是这样的一种思路。

对5,4,7,9,10,1,2,8,6使用快速排序

快速排序需要选择一个中间值。然后将大于中间值放一边,小于中间值放另外一边。

知道在排序的最长的一侧子序列为2个为止。

例如选择第一个元素5为中间值,则排列后的为4,1,2,|5|,7,9,10,8,6(快速排序具有保序性,原有排列顺序不变)

继续选子序列的第一个元素为子序列中间值,则排列后为1,2,|4|,5,6,|7|,9,10,8

重复刚才的过程…

最后得到1,2,4,5,6,7,9,10,8。

该算法符合递归的条件,可以使用递归来完成。

基线条件为最大的子序列为2个数

递归条件为,选取中间值,大的放右边,小的放左边

平均运行时间为 O O O($ n l o g n nlog n nlogn).

补充:

1.D&C将问题逐步分解,使用D&C处理列表时,基线条件很可能是空数组或只包含一个元素的数组

2.实现快速排序时,请随机选择用作基准值的元素。快速排序的平均运行时间为 O O O n l o g n nlogn nlogn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值