排序算法对比

排序算法对比

排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 原址排序 比较排序 稳定
插入排序 $\Theta \left( n^{2} \right)$ $\Theta \left( n \right)$ $\Theta \left( n^{2} \right)$ $\mathbf{O} \left( 1 \right)$
归并排序 $\Theta \left( n \lg n \right)$ $\Theta \left( n \lg n \right)$ $\Theta \left( n \lg n \right)$ $\mathbf{O} \left( n \right)$
堆排序 $\mathbf{O} \left( n \lg n \right)$ $\mathbf{O} \left( n \lg n \right)$ $\mathbf{O} \left( n \lg n \right)$ $\mathbf{O} \left( 1 \right)$
快速排序 $\Theta\left( n \lg n \right)$ $\Theta\left( n \lg n \right)$ $\Theta \left( n^{2} \right)$ $\mathbf{O} \left( \lg n \right)$
计数排序 $\Theta \left( n + k \right)$ $\Theta \left( n + k \right)$ $\Theta \left( n + k \right)$ $\mathbf{O} \left( k \right)$
基数排序 $\Theta \left( d \left( n + k \right) \right)$ $\Theta \left( d \left( n + k \right) \right)$ $\Theta \left( d \left( n + k \right) \right)$ $\mathbf{O} \left( n + k \right)$
桶排序 $\Theta \left( n + k \right)$ $\Theta \left( n + k \right)$ $\Theta\left( n^{2} \right)$ $\mathbf{O} \left( n + k \right)$

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

链表:最坏情况下的仅仅运行时间

unsorted, singly linked sorted, singly linked unsorted, doubly linked sorted, doubly linked  
$\text{SEARCH(L, k)}$ $\Theta(n)$ $\Theta(n)$ $\Theta(n)$ $\Theta(n)$
$\text{INSERT(L, x)}$ $\Theta(1)$ $\Theta(n)$ $\Theta(1)$ $\Theta(n)$
$\text{DELETE(L, x)}$ $\Theta(n)$ $\Theta(n)$ $\Theta(1)$ $\Theta(1)$
$\text{SUCCESSOR(L, x)}$ $\Theta(n)$ $\Theta(1)$ $\Theta(n)$ $\Theta(1)$
$\text{PREDECESSOR(L, x)}$ $\Theta(n)$ $\Theta(n)$ $\Theta(n)$ $\Theta(1)$
$\text{MINIMUM(L)}$ $\Theta(n)$ $\Theta(1)$ $\Theta(n)$ $\Theta(1)$
$\text{MAXIMUM(L)}$ $\Theta(n)$ $\Theta(n)$ $\Theta(n)$ $\Theta(n)$
Table of Contents