无题
| 常见数据规模 (n) | 可接受的时间复杂度 | 常见算法举例 |
|---|---|---|
| n ≤ 20 | O(2ⁿ), O(n!) | 深度优先搜索 (DFS)、状态压缩动态规划 |
| n ≤ 1,000 | O(n²), O(n² log n) | 动态规划、Floyd算法、朴素Dijkstra |
| n ≤ 100,000 | O(n log n) | 排序、线段树、树状数组、堆、分治、最短路算法 |
| n ≤ 1,000,000 | O(n) | 单调栈、KMP、并查集(路径压缩)、双指针、哈希表 |
| n > 1,000,000 | O(1), O(log n) | 数学公式、二分查找、快速幂 |
图常用算法
搜索算法
深度优先搜索
广度优先搜索
最短路径算法
Dijkstra
- 解决非负权图的单源最短路径问题,使用贪心策略
Bellman-Ford
- 处理含负权边的图的单源最短路径,并能检测负权环
Floyd-Warshall
- 计算所有顶点对的最短路径,适用稠密图
最小生成树算法
Kruskal
- 按权重从小到大选择边,使用并查集检测环,适合稀疏图
Prim
- 从起点逐步扩展最小生成树,使用优先队列,适合稠密图
拓扑排序算法
- 针对有向无环图的顶点进行线性排序,使得对每条边(u,v),u在v前
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ascendira!




