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