码迷,mamicode.com
首页 > 编程语言 > 详细

典型排序算法比较

时间:2015-05-06 10:58:22      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:排序算法   性能分析   

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

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


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

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


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


技术分享

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

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

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


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


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


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

技术分享


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


典型排序算法比较

标签:排序算法   性能分析   

原文地址:http://blog.csdn.net/simongeek/article/details/45532131

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!