基本的排序算法

排序算法复杂度(空间+时间)

1.排序算法分为 非线性时间比较类排序线性时间非比较类排序

2.非线性时间比较类排序算法主要有四大类:交换排序、插入排序、选择排序、归并排序

  • 交换排序:冒泡排序、快速排序
  • 插入排序:简单插入排序、希尔排序
  • 选择排序:简单选择排序、堆排序
  • 归并排序:二路归并排序、多路归并排序

3.线性时间非比较类排序主要有三大类:计数排序、基数排序、桶排序

基本的排序算法
4.排序算法复杂度(时间、空间)对比

  • 时间复杂度(平均)
    非线性时间比较排序:
    O(n^2):冒泡排序、插入排序、选择排序
    O(n* log2n):快速排序、堆排序、归并排序
    O(n^1.3):希尔排序
    线性时间非比较排序:
    O(n + k)计数排序、桶排序
    O(n * k)基数排序

  • 空间复杂度:指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数
    非线性时间比较排序:
    O(1):冒泡排序、插入排序、希尔排序、选择排序、堆排序
    O(n log2n):快速排序
    O(n):归并排序
    线性时间非比较排序:
    O(n + k):都为O(n + k)
    基本的排序算法

5.排序算法稳定性:(如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面,这叫不稳定)

  • 不稳定:快速排序、希尔排序、选择排序、堆排序
  • 稳定:其余都稳定