QuickSort和MergeSort对比小结

本文对比了快速排序和归并排序的时间复杂度、稳定性及实现方式等关键特性,并探讨了两者在实际应用中的优劣。快速排序平均时间复杂度为O(nlogn),但在最坏情况下降为O(n^2);归并排序则始终保持O(nlogn)的时间复杂度。然而由于归并排序需要额外的O(n)空间开销,在实际应用中快速排序更为常见。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1) QuickSort的时间复杂度平均是O(nlogn),但最坏情况下是O(n^2)。MergeSort的时间复杂度严格来说就是O(nlogn)。那为什么实际应用中QuickSort用得多呢?因为MergeSort需用分配额外的O(n)空间,当用到new函数的时候会消耗很多的系统时间。另外像JAVA里面还要garbage collection又消耗一些时间。所以总体上来说MergeSort的overhead更大。
2) QuickSort的写法有很多种,每次取pivot可以从中间取,也可以从两边取,也可以弄个随机函数取。QuickSort也可以搞个额外空间。
而MergeSort一定是从中间取。
3) QuickSort是不稳定算法,MergegSort是稳定算法。这里稳定是指当数组有重复元素时,排序后的元素仍然能保持之前的顺序。
4) QuickSort和MergeSort的复杂度都可以按T(n)=2T(n/2)+O(n)来分析。
QuickSort先做O(n)的部分,再做2T(n/2)的部分。即先整体有序,再局部有序。
MergeSort先做2T(n/2)的部分,再做O(n)的部分。即先局部有序,再整体有序。

未完待续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值