排序(3)-效率对比

引言

本章综合前面的简单排序算法+复杂排序算法,给出在不同数据量下的运行时间(单位:ms)。然后对结果进行相关分析,并给出时间复杂度、空间复杂度、稳定性方面的总结。

验证结果

本文选取了不同规模的数据量,另外值得注意的一点是,数据的波动范围应该尽可能的大,若范围过小,则产生相同数据的概率将增大,此时对于像快速排序这样的需要逐个元素判别的算法的效率将大大受到影响。各算法的运行时间如下图所示:


效率分析

  • 二路插入排序算法效率整体不高,因为涉及较多取模运算和判定,反而弄巧成拙
  • 冒泡排序算法在数据量较小(<5000)时效率还较为可观,但随着数据量增大效率急剧降低
  • 选择排序算法和朴素插入排序算法比冒泡排序算法效率高一些,但随着数据量进一步增大效率仍是急剧降低
  • 二分插入排序算法相对前面的简单排序算法效果更为可观些,但仍无法应对更大数据量场景
  • 希尔排序算法在数据量较小时效果非常可观,基本与复杂排序持平,但随着数据量增大效率仍不及复杂排序
  • 论平均效率,在小数据量下快速排序 = 堆排序 > 基数排序 > 归并排序,但在大数据量下基数排序 > 归并排序 > 快速排序 > 堆排序

下面给出这些算法在理论上的时间复杂度、空间复杂度和稳定性:



注:上表基数排序算法中,r表示关键字的基数,d表示长度,n表示关键字的个数。

结语

本文对排序算法进行了对比与效率方面的分析,关于更细节的分析本文并未给出,比如堆排序为什么在大数据量的时候效率并不可观、排序的稳定性受什么因素影响等。另外,本系列文章给出的代码中仍可能有效率不高地方,可以进一步优化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,600评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,092评论 0 15
  • 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序好...
    依依玖玥阅读 5,031评论 0 2
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 6,780评论 0 35
  • 高考已然过去,这一年,有的是枯燥的课堂,三点一线的生活。还有那看是永远也刷不完的卷子。陪伴...
    eeerrrrr阅读 1,787评论 0 1

友情链接更多精彩内容