Skip to content
On this page

算法

算法概述

十种常见排序算法可以分为两大类:

非线性时间比较类排序: 通过比较来决定元素间的相对次序,由于其时间复杂度不能突破 O(nlogn),因此称为非线性时间比较类排序。

线性时间非比较类排序: 不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。

alt text

算法复杂度

排序时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性
插入排序0(n^2)0(n^2)0(n)0(1)稳定
希尔排序0(n^1.3)0(n^2)0(n)0(1)不稳定
选择排序0(n^2)0(n^2)0(n^2)0(1)不稳定
堆排序O(nlog₂n)O(nlog₂n)O(nlog₂n)0(1)不稳定
冒泡排序0(n^2)0(n^2)0(n)0(1)稳定
快速排序O(nlog₂n)0(n^2)O(nlog₂n)O(nlog₂n)不稳定
归并排序O(nlog₂n)O(nlog₂n)O(nlog₂n)0(n)稳定
计数排序0(n+k)0(n+k)0(n+k)0(n+k)稳定
桶排序0(n+k)0(n^2)0(n^2)0(n+k)稳定
基数排序0(n+k)0(n+k)0(n*k)0(n+k)稳定

相关概念

稳定: 如果 a 原本在 b 前面,而 a=b,排序之后 a 仍然在 b 的前面。

不稳定: 如果 a 原本在 b 的前面,而 a=b,排序之后 a 可能会出现在 b 的后面。

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

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

https://mp.weixin.qq.com/s?__biz=MjM5MDA2MTI1MA==&mid=2649106615&idx=2&sn=664f54223b7be179f36d5e547b2d205e&chksm=be580f1a892f860cab5f3e7a22fe68478a103441f4c6921f0893a8eacb52fde3f9643bd7c837&scene=27