十大排序算法 sort algorithm

算法分类

  • 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(n*log n),因此称为非线性时间比较类排序算法;
  • 线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较类排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序算法;

非线性比较类排序算法:

  1. 冒泡排序
  2. 选择排序
  3. 插入排序
  4. 快速排序
  5. 归并排序
  6. 希尔排序
  7. 堆排序

线性时间非比较类排序算法:

  1. 计数排序
  2. 桶排序
  3. 基数排序

排序相关概念:

  • 稳定:如果a原本在b前边,a=b,排序完后,a依旧在b前边;
  • 不稳定:如果a原本在b前边,a=b,排序完后,b在a的前边;
  • 时间复杂度:对排序数据总得操作次数,当n变化时,操作次数呈现什么规律;
  • 空间复杂度:指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数;

关于时间复杂度:

  • 平方阶 O(n^2) 排序
  • 各类简单排序:直接插入、直接选择和冒泡排序。
  • 线性对数阶 O(nlog2n) 排序:快速排序、堆排序和归并排序;
    O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序
  • 线性阶 O(n) 排序 基数排序,此外还有桶、箱排序。

复杂度图解:

《十大排序算法 sort algorithm》 sort.png

十大排序代码解析

O(n^2)

O(nlogn)

O(n^1.3)

O(n+k)

O(n*k)

点赞