七大排序算法之各算法的比较

前言

如果对七大排序算法还不是很了解的,可以对着下面这些链接,再去学习或者熟悉下

冒泡排序

选择排序

插入排序

快速排序

堆排序

归并排序

希尔排序

这篇文章主要是对这七大排序算法做一些总结,什么情况下应该用哪个排序算法等。

正文

首先,再复习一下各个排序算法的时间复杂度,以及稳定性(图源自网络)

先科普一下算法的稳定性这个概念,什么叫做算法的稳定性呢?举个具体的例子

首先简单的数字排序,这里稳定性没有任何意义,那么情况下有意义呢?要排序的内容是一个复杂对象的多个数字属性,且其原本的初始顺序存在意义,那么我们需要在二次排序的基础上保持原有排序的意义,才需要使用到稳定性的算法,例如要排序的内容是一组原本按照价格高低排序的对象,如今需要按照销量高低排序,使用稳定性算法,可以使得想同销量的对象依旧保持着价格高低的排序展现,只有销量不同的才会重新排序。(当然,如果需求不需要保持初始的排序意义,那么使用稳定性算法依旧将毫无意义)。

好了,接着总结,其实网上关于各大算法的分析已经有很多了,但是可能有一些问题就是,说了一大堆,不能快速get到点,那么这就是这篇文章的目的,没有废话,干货在此。

(1)当原表基本有序时,冒泡排序和插入排序的表现良好,时间复杂度可降至O(n)

(2)当待排序元素个数n较大时,应该选择快速排序,堆排序,或者归并排序等时间复杂度为O(nlogn)的算法

        2.1  若内存空间允许,且要求稳定性,则选择归并排序,但是一般不会直接使用归并排序,通常和插入排序结合起来使用,先用插入排序得到有序序列,再归并之,并且由于插入排序是稳定的,所以改进之后的归并排序仍然是稳定的

        2.2  堆排序所需辅助空间少于快速排序,并且不会出现时间复杂度退化为O(n*n)的情况,也就是说,最坏情况下的时间复杂度都为O(nlogn)

        2.3   对效率要求较高的话,采用快速排序,且快速排序是大规数据排序场景中应用最多的排序算法

(3)当待排序元素个数n较小时,采用插入排序和选择排序,若同时要求稳定性,采用插入排序

(4)一般不采用传统的冒泡排序

 

 

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值