查找算法 | 时间复杂度 | |
顺序查找 | O(n) | 算法简单,适应面广,稳定算法 |
折半查找 | O(log2n) | 针对有序的序列表,不稳定 |
分块查找 | 介于顺序查找和折半查找之间 | 针对有序表,不稳定算法 |
平衡二叉树查找 | O(log2n) | 插入与删除的复杂度也相同 |
排序法 |
平均时间 |
最差情形 |
稳定度 |
额外空间 | |
---|---|---|---|---|---|
冒泡 |
O(n2) | O(n2) | 稳定 |
O(1) |
n小时较好 |
交换 | O(n2) | O(n2) | 不稳定 | O(1) |
n小时较好 |
选择 |
O(n2) |
O(n2) | 不稳定 | O(1) |
n小时较好 |
插入 | O(n2) |
O(n2) | 稳定 | O(1) | 大部分已排序时较好 |
Shell |
O(nlogn) |
O(ns)1<s<2 | 不稳定 | O(1) | s是所选分组 |
快速 | O(nlogn) |
O(n2) | 不稳定 | O(nlogn) |
n大时较好 |
归并 | O(nlogn) |
O(nlogn) | 稳定 | O(1) | n大时较好 |
堆 | O(nlogn) |
O(nlogn) | 不稳定 | O(1) | n大时较好 |
基数 | O(logRB) |
O(nlogRB) | 稳定 | O(n) | B是真数(0-9),R是基数(个十百) |
树图 | 时间复杂度 |
克鲁斯卡尔 | O(eloge) |
普里姆 | O(n2) |
迪杰斯特拉 | O(n2) |
拓扑排序 | O(n+e) |
关键路径 |
O(n+e) |