| 数据结构 | 查找 | 插入 | 删除 |
|---|
| 数组 | O(n) | O(n) | O(n) |
| 有序数组 | O(logn) | O(n) | O(n) |
| 哈希表 | O(1) 均摊 | O(1) 均摊 | O(1) 均摊 |
| 平衡二叉搜索树 | O(logn) | O(logn) | O(logn) |
快速排序的平均复杂度是 O(nlogn),但最坏情况会退化到 O(n2);归并排序稳定在 O(nlogn),代价是需要 O(n) 额外空间。
堆排序是 O(nlogn) 且原地,但它不稳定,实际运行常数往往比快排大。
复杂度是增长趋势,不是运行时间。n 很小的时候常数项说了算。
对于形如 T(n)=aT(n/b)+O(nd) 的递推:
T(n)=⎩⎨⎧O(nd)O(ndlogn)O(nlogba)d>logbad=logbad<logba