排序算法①

直接插入排序、希尔排序、冒泡排序、简单选择排序、快速排序、堆排序、归并排
序、基数排序的算法思想、复杂度分析、稳定性以及它们之间的比较。

1、分类

排序算法主要可根据 稳定性 、就地性 、自适应性 分类。理想的排序算法具有以下特性:

  • 具有稳定性,即相等元素的相对位置不变化;

    稳定排序」在完成排序后,不改变 相等元素在数组中的相对顺序。例如:冒泡排序、插入排序、归并排序、基数排序、桶排序。
    稳定排序」在完成排序后,相等素在数组中的相对位置 可能被改变。例如:选择排序、快速排序、堆排序。


  • 具有就地性,即不使用额外的辅助空间;

    排序算法可分为「原地排序」和「异地排序」两类。
    一般地,由于不使用外部内存,原地排序相比非原地排序的执行效率更高。

    原地排序」不使用额外辅助数组,例如:冒泡排序、插入排序、选择排序、快速排序、堆排序。
    非原地排序」使用额外辅助数组,例如:归并排序、基数排序、桶排序。


  • 具有自适应性,即时间复杂度受元素分布影响;


    「自适应排序」的时间复杂度受元素分布影响;例如冒泡排序、插入排序、快速排序、桶排序。
    「非自适应排序」的时间复杂度恒定;例如:选择排序、归并排序、堆排序、基数排序。


  • 比较类排序:基于元素之间的 比较算子(小于、相等、大于)来决定元素的相对顺序;相对的,非比较排序则不基于比较算子实现。


    比较类排序」基于元素之间的比较完成排序,例如:冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序。
    非比较类排序」不基于元素之间的比较完成排序,例如:基数排序、桶排序。

    基于比较的排序算法的平均时间复杂度最优为 O(NlogN),而非比较排序算法可以达到线性级别的时间复杂度。


特别地,任意排序算法都 不同时具有以上所有特性 。

因此,排序算法的选型使用取决于具体的列表类型、元素数量、元素分布情况等应用场景特点。

2、时间复杂度,空间复杂度 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值