算法基础:排序(三)——快速排序——Python实现

快速排序也是一种采用分治策略的排序算法,它将一个数组分成两个子数组,取数组第一个元素作为切分点P,使左侧子数组任意元素不大于P,右侧不小于P;然后将两部分独立地排序,便完成了整个数组的排序。

引用一张图可能更好理解(截图自http://algs4.cs.princeton.edu/23quicksort/):
quicksort

快速排序和归并排序是互补的,下面比较一下两种排序:
在算法流程方面,
快速排序:切分–>左右排序。
归并排序:左右排序–>归并。

划分方面,
快速排序:取决于数组的内容(一般取决于第一个元素),不一定等分。
归并排序:二等分。
时间复杂度都正比于NlogN。

额外内存开销,
快速排序:原地排序(可能只需要很小的辅助栈),空间复杂度logN。
归并排序:需要大小为N的辅助数组,空间复杂度N。
这也是快速排序相比于归并排序的优点。

稳定性,
快速排序:不稳定,相同大小的元素,在排序过程中,位置可能被交换
归并排序:稳定。

class Quick
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值