概述
排序算法有很多种,每一种都有其优缺点,可以适应不同的场合。排序算法的好坏,主要是看排序效率,排序效率的一个重要指标就是速度,速度是影响排序算法的最主要因素。
一般来说,判断一个算法的优劣,可以从以下两个方面进行:
- 算法的复杂度:以O表示,往往从最差,平均,最好三种情况来评价。
- 系统资源的占用:主要是内存和其他资源的占用,一个好的算法应该占用少的内存资源。
常用排序算法——计算复杂度比较:
- 冒泡排序法:平均算法速度O(n^2),最坏情况下的算法速度O(n^2)。
- 快速排序法:平均算法速度O(nlogn),最坏情况下的算法速度O(n^2)。
- 选择排序法:平均算法速度O(n^2),最坏情况下的算法速度O(n^2)。
- 堆排序法:平均算法速度O(nlogn),最坏情况下的算法速度O(nlogn)。
- 插入排序法:平均算法速度O(n^2),最坏情况下的算法速度O(n^2)。
- shell排序法:平均算法速度O(n^(3/2)),最坏情况下的算法速度O(n^2)。
- 合并排序法:平均算法速度O(nlogn),最坏情况下的算法速度O(nlogn)。
常用排序算法——占用系统资源比较:
- 以上的排序算法中,大部分都只需要1个元素的存储单元(用于交换数据)。
- 而合并排序算法需要与原始序列一样长的n个元素的存储单元(用于保存多遍合并操作)。
- 因此合并排序算法的占用系统资源大。
其实,没有某一种算法是绝对好的,不同的算法有其各自的优劣,算法的选择需要结合实际的情况。
- 当数据量n较小时,可以采用插入排序法或选择排序法。
- 当数据量n较大时,则应该采用快速排序法或合并排序法等计算复杂度为O(nlogn)的算法。
- 如果需要排序的数据是随机分布的(没有规律),则采用快速排序法的平均算法时间最短。
总结:合适的算法一定是根据实际问题的需要来选择,这样才能达到更高的算法执行效率。
下一篇:浅谈排序算法的效率(二)—(Java随笔)
最后
以上就是平常香菇为你收集整理的浅谈排序算法的效率(一)—(Java随笔)的全部内容,希望文章能够帮你解决浅谈排序算法的效率(一)—(Java随笔)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复