zoukankan      html  css  js  c++  java
  • 排序算法复杂度

    内排序

    排序大的分类可以分为两种:内排序和外排序。在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面讲的排序都是属于内排序。

    内排序有可以分为以下几类:

      (1)、插入排序:直接插入排序、二分法插入排序、希尔排序。

      (2)、选择排序:直接选择排序、堆排序。

      (3)、交换排序:冒泡排序、快速排序。

      (4)、归并排序

      (5)、基数排序

    复杂度

    排序方法

    时间复杂度

    空间复杂度

    稳定性

    平均情况

    最好情况

    最坏情况

    插入排序

    直接插入

    O(n2)

    O(n)

    O(n2)

    O(1)

    稳定

    Shell排序

    O(n1~2)

    O(nlog2n)

    O(n2)

    O(1)

    不稳定

    选择排序

    直接选择

    O(n2)

    O(n2)

    O(n2)

    O(1)

    不稳定

    堆排序

    O(nlog2n)

    O(nlog2n)

    O(nlog2n)

    O(1)

    不稳定

    交换排序

    冒泡排序

    O(n2)

    O(n)

    O(n2)

    O(1)

    稳定

    快速排序

    O(nlog2n)

    O(nlog2n)

    O(n2)

    O(log2n)

    不稳定

    归并排序

    O(nlog2n)

    O(nlog2n)

    O(nlog2n)

    O(n)

    稳定

    基数排序

    O(d(n+r))

    O(d(n+r))

    O(d(n+r))

    O(n+rd)

    稳定

    注:1.希尔排序的时间复杂度和增量的选择有关。

          2.基数排序的复杂度中,r代表关键字的基数,d代表长度,n表示关键字的个数。

     

  • 相关阅读:
    JavaScript数据类型(第一天)
    数据库的事务隔离级别
    SSH(远程登录)原理
    Hadoop安装
    activiti学习第二天
    activiti学习第一天
    .net调用系统软键盘(兼容win7及win10)
    使用Blend设计出符合效果的WPF界面
    Mysql的收获
    PHP文件上传安全处理的步骤
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/10539631.html
Copyright © 2011-2022 走看看