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表示关键字的个数。

     

  • 相关阅读:
    AOC的服务还不错
    浅谈Java、MySQL的中文排序问题
    祝cnBlogs的Blogger们新年快乐!
    GT 3.9.4以及今天的工作
    堆排序
    桶排序
    常用排序算法稳定性分析
    VS2010远程调试环境配置详解
    基数排序
    如何修改数据库的服务器名称
  • 原文地址:https://www.cnblogs.com/fanguangdexiaoyuer/p/10539631.html
Copyright © 2011-2022 走看看