对归并、堆排、快排的一些总结。

本文深入探讨了三种常见排序算法:堆排序、归并排序与快速排序的理论时间复杂度及实际效率差异。特别强调了堆排序因非等概率调整导致的低效,归并排序的高效率与稳定性,以及快速排序在综合表现上的优势,特别是其接近最优划分策略的思想。此外,文章还讨论了它们各自的特点,如空间复杂度、稳定性等。

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

这三个算法的理论时间复杂度都是nlogn,但是区别还是很大的。


这三个算法里,实际效率最低的是堆排序,因为在每次调整大根堆的时候,都把底层元素交换到了根,然后再调整,而底层元素又不可能大于原根元素的两个孩子节点,因此非等概率调整,做了很多次无效交换,因此实际效率最低。


归并排序时间效率最高,并且稳定,因为归并排序每次都把序列二等分,做等概率划分,最后继续划分,这样就能达到最优划分策略,即logn次划分,每个元素最多进行logn次比较,n个元素也就是nlogn,并且在合并的时候不破坏现有顺序,因此是稳定排序,但由于借助了logn个递归栈和n个临时存储空间,因此他的可适用性反而不如快排。


快排效率上是不如归并的,而且不稳定,但是思想和归并一样,都是对序列不断做划分,然后排序,划分策略未必就是最优划分策略,但是可以让他接近最优划分策略,这就涉及到了一个选择枢纽元的问题,比较常见的方法是用三数中值法,并且由于是就地排序,不许靠考虑额外空间开销,因此快排是综合最好的排序算法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值