各种排序算法的时空复杂度及稳定性

        排序算法是一种将一组特定的数据按某种顺序进行排列的算法。排序算法多种多样,性质也大多不同。

        稳定性

        稳定性是指相等的元素经过排序之后相对顺序是否发生了改变。

        拥有稳定性这一特性的算法会让原本有相等键值的纪录维持相对次序,即如果一个排序算法是稳定的,当有两个相等键值的纪录RS,且在原本的列表中R出现在S之前,在排序过的列表中R也将会是在S之前。

        时间复杂度

        时间复杂度用来衡量一个算法的运行时间和输入规模的关系,通常用O表示。

        时间复杂度分为最优时间复杂度、平均时间复杂度和最坏时间复杂度。OI 竞赛中要考虑的一般是最坏时间复杂度,因为它代表的是算法运行水平的下界,在评测中不会出现更差的结果了。

        空间复杂度

        空间复杂度用来描述算法空间消耗的规模。一般来说,空间复杂度越小,算法越好。

        各种排序算法的比较

        下面给出各种排序算法的时空复杂度及稳定性表格:

排序方法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性
插入排序O\left ( n^{2} \right )O\left ( n^{2} \right )O\left ( n \right )O\left ( 1 \right )稳定
希尔排序O\left ( n^{1.3} \right )O\left ( n^{2} \right )O\left ( n \right )O\left ( 1 \right )不稳定
选择排序O\left ( n^{2} \right )O\left ( n^{2} \right )O\left ( n^{2} \right )O\left ( 1 \right )不稳定
堆排序O\left ( n log_{2} n\right )O\left ( n log_{2} n\right )O\left ( n log_{2} n\right )O\left ( 1 \right )不稳定
冒泡排序O\left ( n^{2} \right )O\left ( n^{2} \right )O\left ( n \right )O\left ( 1 \right )稳定
快速排序O\left ( n log_{2} n\right )O\left ( n^{2} \right )O\left ( n log_{2} n\right )O\left ( n log_{2} n\right )不稳定
归并排序O\left ( n log_{2} n\right )O\left ( n log_{2} n\right )O\left ( n log_{2} n\right )O\left ( n \right )稳定
计数排序O\left ( n+k \right )O\left ( n+k \right )O\left ( n+k \right )O\left ( n+k \right )稳定
桶排序O\left ( n+k \right )O\left ( n^{2} \right )O\left ( n \right )O\left ( n+k \right )稳定
基数排序O\left ( n\times k \right )O\left ( n\times k \right )O\left ( n\times k \right )O\left ( n+k \right )稳定

每周六更新一篇文章,内容一般是自己总结的经验或是在其他网站上整理的优质内容

点个赞,关注一下呗~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值