zoukankan      html  css  js  c++  java
  • 各种排序算法时间复杂度

    原博客地址:https://www.cnblogs.com/xiaochun126/p/5086037.html

    各种排序算法比较 

    各种常用排序算法

    类别

    排序方法

    时间复杂度

    空间复杂度

    稳定性

    复杂性

    特点

    最好

    平均

    最坏

    辅助存储

     

    简单

    插入

    排序

    直接插入

    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的增大而增大,但却是效率高且稳定的排序算法。

    基数排序

    O(d(r+n))

    O(d(r+n))

    O(d(r+n))

    O(rd+n)

    稳定

    复杂

    注:r代表关键字基数,d代表长度,n代表关键字个数

    注:

    1、归并排序每次递归都要用到一个辅助表,长度与待排序的表长度相同,虽然递归次数是O(log2n),但每次递归都会释放掉所占的辅助空间,

    2、快速排序空间复杂度只是在通常情况下才为O(log2n),如果是最坏情况的话,很显然就要O(n)的空间了。当然,可以通过随机化选择pivot来将空间复杂度降低到O(log2n)。

    相关概念:

    1、时间复杂度

         时间复杂度可以认为是对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。

         常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2)

         时间复杂度O(1):算法中语句执行次数为一个常数,则时间复杂度为O(1),

    2、空间复杂度

        空间复杂度是指算法在计算机内执行时所需存储空间的度量,它也是问题规模n的函数

        空间复杂度O(1):当一个算法的空间复杂度为一个常量,即不随被处理数据量n的大小而改变时,可表示为O(1)

        空间复杂度O(log2N):当一个算法的空间复杂度与以2为底的n的对数成正比时,可表示为O(log2n)

                                     ax=N,则x=logaN,

        空间复杂度O(n):当一个算法的空间复杂度与n成线性比例关系时,可表示为0(n).

  • 相关阅读:
    从头梳理一下经常问到的 “零拷贝” 问题!
    Redis缓存使用中的热key问题
    使用Redis,你必须知道的21个注意要点
    一文理解 Redis 的核心原理与技术!
    大厂常问的Redis面试题
    三种不同场景下的 Kubernetes 服务调试方法
    Docker 和 Kubernetes:root 与特权
    DRBD详细解说及配置过程记录
    MySQL 高可用方案-PXC环境部署记录
    MySQL高可用方案
  • 原文地址:https://www.cnblogs.com/lipanDL/p/11101778.html
Copyright © 2011-2022 走看看