常用排序算法的时间复杂度与稳定性
算法 |
最好时间复杂度 |
平均时间复杂度 |
最坏时间复杂度 |
空间复杂度 |
稳定性
|
复杂性 |
直接插入排序 |
O(n) |
O(n2) |
O(n2) |
O(1) |
是 |
简单 |
冒泡排序 |
O(n) |
O(n2) |
O(n2) |
O(1) |
是 |
简单 |
选择排序 |
O(n2) |
O(n2) |
O(n2) |
O(1) |
否 |
简单 |
希尔排序 |
|
O(nlogn)~O(n2) |
O(nlogn)~O(n2) |
O(1) |
否 |
复杂 |
快速排序 |
O(nlogn) |
O(nlogn) |
O(n2) |
O(logn) |
否 |
复杂 |
堆排序 |
O(nlogn) |
O(nlogn) |
O(nlogn) |
O(1) |
否 |
复杂 |
归并排序 |
O(nlogn) |
O(nlogn) |
O(nlogn) |
O(n) |
是 |
复杂 |
基数排序 |
O(d(n+rd)) |
O(d(n+rd)) |
O(d(n+rd)) |
O(rd) |
是 |
复杂 |
二叉树排序 |
O(nlogn) |
O(nlogn) |
O(n) |
O(n) |
否 |
复杂 |
查找算法的时间复杂度:
红黑树查找算法的时间复杂度为O(logn)
哈希查找算法的时间复杂度为O(1)
顺序查找算法的时间复杂度为O(n)
折半查找算法的时间复杂度为O(logn)
二叉排序树查找的时间复杂度为O(logn)
分块查找算法的时间复杂度为O(logn)
平衡二叉树查找的时间复杂度为O(logn),删除插入的时间复杂度是O(logn)。