八大排序算法详解

基本概念(下面每个算法都可点击跳转到具体的文章):

冒泡排序详解

选择排序详解

插入排序详解

希尔排序详解

归并排序详解

快速排序详解

堆排序详解

基数排序详解

时间复杂度:

计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。

空间复杂度:

空间复杂度(Space Complexity)是对一个算法在运行过程中临时占用存储空间大小的量度,记做S(n)=O(f(n))。

排序算法的稳定性:

假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。

稳定的排序算法

冒泡排序、插入排序、归并排序、基数排序

非稳定的排序算法

选择排序、希尔排序、快速排序、堆排序

这里可能有些人对选择排序不是稳定的有疑问,举个例子,对数组{6, 6, 2}进行选择排序后,就会产生不稳定的新序列。

小结:

如何选择排序算法:

1.先分析是否需要稳定性的排序

2.再分析空间复杂度是否满足需求,然后选择时间复杂度相对快的

3.快速排序是大多数应用场景的首选

写在最后的:排序算法不要死记硬背复杂度如何、稳定性如何,也不需要将代码背下来,工业库已经有各种算法的实现,死记硬背没有意义。只要真正理解了算法的原理,具体问题具体分析,才能灵活运用,才真正算是学会了算法。

原文出自:http://blog.csdn.net/daiyudong2020/article/details/52566927

End;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值