• 各种排序算法的时间复杂度


    各种常用排序算法

    类别

    排序方法

    时间复杂度

    空间复杂度

    稳定性

    复杂性

    特点

    最好

    平均

    最坏

    辅助存储

     

    简单

    插入

    排序

    直接插入

    O(N)

    O(N2)

    O(N2)

    O(1)

    稳定

    简单 

    希尔排序

    O(N)

    O(N1.3)

    O(N2)

    O(1)

    不稳定

    复杂

    选择

    排序

    直接选择

    O(N)

    O(N2)

    O(N2)

    O(1)

    不稳定

    堆排序

    O(N*log2N)

    O(N*log2N)

    O(N*log2N)

    O(1)

    不稳定

    复杂

    交换

    排序

    冒泡排序

    O(N)

    O(N2)

    O(N2)

    O(1)

    稳定

    简单

    1、冒泡排序是一种用时间换空间的排序方法,n小时好
    2、最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(N^2)只是表示其操作次数的数量级
    3、最好的情况是数据本来就有序,复杂度为O(n)

    快速排序

    O(N*log2N)

    O(N*log2N) 

    O(N2)

    O(log2n)~O(n) 

    不稳定

    复杂

    1、n大时好,快速排序比较占用内存,内存随n的增大而增大,但却是效率高不稳定的排序算法。
    2、划分之后一边是一个,一边是n-1个,
    这种极端情况的时间复杂度就是O(N^2)
    3、最好的情况是每次都能均匀的划分序列,O(N*log2N)

    归并排序

    O(N*log2N) 

    O(N*log2N) 

    O(N*log2N) 

    O(n)

    稳定

    复杂

    1、n大时好,归并比较占用内存,内存随n的增大而增大,但却是效率高且稳定的排序算法。

  • 相关阅读:
    P3158 [CQOI2011]放棋子
    Codeforces 1220D. Alex and Julian
    Codeforces 1220C. Substring Game in the Lesson
    Codeforces 1220B. Multiplication Table
    BZOJ 3260. 跳
    BZOJ 3251. 树上三角形
    P1398 [NOI2013]书法家
    P1224 [NOI2013]向量内积
    The Preliminary Contest for ICPC Asia Shanghai 2019 A. Lightning Routing I
    P4271 [USACO18FEB]New Barns
  • 原文地址:https://www.cnblogs.com/ceceliahappycoding/p/10643844.html
Copyright © 2020-2023  润新知