典型排序算法比较

根据带排序数据是否全部放入内存,排序分为内排序和外排序。

下面就根据我看书的体会,主要分析内排序的性能。


内排序的种类:插入排序(直接插入排序,希尔排序),选择排序(简单选择排序、堆排序),交换排序(冒泡排序、快速排序),归并排序。

其中用的比较多的是插入排序、归并排序、快速排序。


排序算法的比较:性能的比较可以从以下5个方面进行分析:时间复杂度(平均情况、最好情况、最差情况),空间复杂度(辅助空间),稳定性。



平均情况角度,三种改进算法胜过希尔排序,并且远好于三种简单算法。

最好情况角度,冒泡和直接插入排序更胜一筹,就是说,在待排序数据基本有序的情况下,反而不应该使用四种复杂算法。

最坏情况角度,堆排序和归并排序要更胜一筹。


空间复杂度角度,归并排序强调要想跑的快,必须给足够的空间;快速排序也有相应的空间复杂度的要求;相比之下,堆排序空间复杂度职位O(1),少量索取,大量付出型。因此,在算法执行环境非常在乎内存使用量的情况下,选择堆排序是个不错的选择,归并排序和快速排序就不是最佳选择了。


稳定性角度,归并排序独占鳌头。对算法稳定性要求很高的情况下,归并排序是不二选择。


待排序记录的个数角度,记录数越小,越应该选择简单排序。例如,在对快速排序进行优化的时候,其中就有一个方面就是在记录数小于一定阀值的情况下,应该使用插入排序。



移动次数角度,简单选择排序优势就很大。


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值