栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过实验对比十大排序算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过实验对比十大排序算法

通过实验对比十大排序算法

前面给出了所有算法的实现,代码实现可能还有优化的空间,但也可以通过这些算法来实验大致分析每一种算法的优劣。

文章目录
  • 通过实验对比十大排序算法
  • 实验环境
  • 一、各个排序算法运行时间对比分析
    • 1、基于线性表逻辑实现的排序算法:
    • 2、基于二叉树逻辑实现的排序算法:
    • 3、基于散列表逻辑实现的排序算法:
  • 二、桶的个数对桶排序的影响
  • 总结


实验环境

随机生成[0,10000]的随机数,随机数的规模分别为10000,100000。运行3次去平均时间。

一、各个排序算法运行时间对比分析 1、基于线性表逻辑实现的排序算法:

分析比较: 从表中可以看出冒泡排序所消耗的时间最大,当数据规模越大,冒泡排序消耗时间与其他几种排序算法消耗时间差距越大。总体来看冒泡排序、选择排序和插入排序都在一个量级上,希尔排序是插入排序的优化,希尔排序的性能得到了很大的提升,和理论的平均复杂度表现大致一致。

2、基于二叉树逻辑实现的排序算法:

分析比较: 归并排序、快速排序、堆排序三种排序算法耗时在数量级上是一致的,在相同规模下,排序耗时比冒泡排序、选择排序、插入排序快100倍,1中的算法只有希尔排序能够与之一战。

3、基于散列表逻辑实现的排序算法:

分析比较: 桶排序和基数排序耗时竟然与1中的冒泡、选择、插入算法耗时在一个量级上,点都没有体现散列表的优势。这是因为,数据规模太大,桶的个数太少,每个桶中要装的数据就很大,散列表中的链表长度就会很长,散列表的性能就会向链表退化。所以桶排序可以增加桶的个数来提升效率。而基数排序的桶只有10个,没有提升空间,所以基数排序的使用场景是对多个关键码的排序,在对数字的排序并不能展现优势。计数排序是所有排序算法的天花板,比2中的排序算法还快10倍。

二、桶的个数对桶排序的影响

随机生成[0,10000]的随机数,数据规模为100000。
随着桶的个数增大,排序算法所消耗的时间图:

结论: 桶的个数越大,使得每个桶中的元素变少,所消耗的时间越小。当桶的个数与数组中最大数字一致时,此时桶排序消耗的时间最小,当每个桶中的元素为1时,这时桶排序所消耗的时间与计数排序一致,这就是桶排序的最好情况。从表中可以看出当桶为10000个时,桶排序的耗时与2中的算法在一个量级,而与计数排序差一个量级,因为生成的随机数始终会有大量的重复数字。


总结

十个算法每一个算法都很金典,都有其存在的意义,由于实验数据的规模和数据范围都会影响每个算法的效率,所以本次实验只能大致从数量级上对比每一个算法的优劣。有的算法可能还能进一步优化提升效率。本次实验只是单纯的对数字进行排序的实验,而实际情况不光是对数字进行排序,所以还得通过实际情况选择适合的排序算法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039507.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号