CC408 · 数据结构

算法演示

逐步观察算法状态、对照伪代码,并把复杂度与 408 高频考点放在同一张工作台上。

查找专题 · 5 项

查找算法

进入查找实验室
算法适用结构最好平均最坏空间
顺序查找Linear Search线性表查找O(1)O(n)O(n)O(1)
二分查找Binary Search有序表查找O(1)O(log n)O(log n)O(1)
分块查找Block Search索引查找O(1)O(sqrt(n))O(sqrt(n))O(sqrt(n))
二叉搜索树查找BST Search树表查找O(1)O(log n)O(n)O(1)
哈希查找Hash Search散列查找O(1)O(1)O(n)O(n)

排序专题 · 9 项

排序算法

进入排序实验室
算法类别最好平均最坏空间稳定原地
冒泡排序Bubble Sort交换排序O(n)O(n^2)O(n^2)O(1)
选择排序Selection Sort选择排序O(n^2)O(n^2)O(n^2)O(1)
直接插入排序Insertion Sort插入排序O(n)O(n^2)O(n^2)O(1)
希尔排序Shell Sort插入排序取决于增量约 O(n^1.3)O(n^2)O(1)
归并排序Merge Sort归并排序O(n log n)O(n log n)O(n log n)O(n)
快速排序Quick Sort交换排序O(n log n)O(n log n)O(n^2)O(log n) 平均
堆排序Heap Sort选择排序O(n log n)O(n log n)O(n log n)O(1)
计数排序Counting Sort非比较排序O(n+k)O(n+k)O(n+k)O(n+k)
基数排序Radix Sort非比较排序O(d(n+r))O(d(n+r))O(d(n+r))O(n+r)

树专题 · 5 项

树算法

进入树实验室
算法结构平均时间空间
二叉树遍历Binary Tree Traversal树遍历O(n)O(h)
由遍历序列重建二叉树Rebuild Binary Tree树构造O(n)O(n)
AVL 树插入AVL Tree Insertion平衡二叉搜索树O(log n)O(h)
哈夫曼编码Huffman Coding最优二叉树O(n log n)O(n)
并查集Union-Find不相交集合O(alpha(n))O(n)

图专题 · 8 项

图算法

进入图实验室
算法问题类型平均时间空间
深度优先搜索Depth-First Search图遍历O(V+E)O(V)
广度优先搜索Breadth-First Search图遍历O(V+E)O(V)
Prim 最小生成树Prim Minimum Spanning Tree最小生成树O(E log V)O(V+E)
Kruskal 最小生成树Kruskal Minimum Spanning Tree最小生成树O(E log E)O(V)
Dijkstra 最短路径Dijkstra Shortest Path单源最短路径O(E log V)O(V+E)
Floyd 全源最短路径Floyd-Warshall全源最短路径O(V^3)O(V^2)
拓扑排序Topological Sort有向无环图O(V+E)O(V)
关键路径Critical PathAOE 网O(V+E)O(V+E)

动态规划专题 · 5 项

动态规划

进入动态规划实验室
算法状态类型平均时间空间
斐波那契数列Fibonacci动态规划入门O(n)O(n)
0/1 背包0/1 Knapsack选择型动态规划O(nC)O(nC)
最长公共子序列Longest Common Subsequence序列动态规划O(mn)O(mn)
矩阵连乘Matrix Chain Multiplication区间动态规划O(n^3)O(n^2)
编辑距离Edit Distance字符串动态规划O(mn)O(mn)