这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
数据结构
一、顺序线性表:向量 Vector
二、单链表 Singly Linked List
- 双向链表 Double Linked Lists
- 静态链表 Static List
- 对称矩阵 Symmetric Matrix
- 稀疏矩阵 Sparse Matrix 三、哈希表 Hash Table
- 散列函数 Hash Function
- 解决碰撞/填充因子 Collision Resolution 四、栈和队列 Stack & Queue
- 广义表 Generalized List/GList
- 双端队列 Deque 五、队列 Queue
- 链表实现 Linked List Implementation
- 循环数组实现 ArrayQueue
- 双端队列 Deque
- 优先队列 Priority Queue
- 循环队列 Circular Queue 六、字符串 String
- KMP 算法
- 有限状态自动机
- 模式匹配有限状态自动机
- BM 模式匹配算法
- BM-KMP 算法
- BF 算法 七、树 Tree
- 二叉树 Binary Tree
- 并查集 Union-Find
- Huffman 树 八、数组实现的堆 Heap
- 极大堆和极小堆 Max Heap and Min Heap
- 极大极小堆
- 双端堆 Deap
- d 叉堆 九、树实现的堆 Heap
- 左堆 Leftist Tree/Leftist Heap
- 扁堆
- 二项式堆
- 斐波那契堆 Fibonacco Heap
- 配对堆 Pairing Heap 十、查找 Search
- 哈希表 Hash
- 跳跃表 Skip List
- 排序二叉树 Binary Sort Tree
- AVL 树
- B 树 / B+ 树 / B* 树
- AA 树
- 红黑树 Red Black Tree
- 排序二叉堆 Binary Heap
- Splay 树
- 双链树 Double Chained Tree
- Trie 树
- R 树
算法
一、排序算法1. 冒泡排序
2. 插入排序
3. 选择排序
4. 希尔 Shell 排序
5. 快速排序
6. 归并排序
7. 堆排序
8. 线性排序算法
9. 自省排序
10. 间接排序
11. 计数排序
12. 基数排序
13. 桶排序
14. 外部排序 - k 路归并败者树
15. 外部排序 - 最佳归并树
- 冒泡排序
- 插入排序
- 选择排序
- 希尔 Shell 排序
- 快速排序
- 归并排序
- 堆排序
- 线性排序算法
- 自省排序
- 间接排序
- 计数排序
- 基数排序
- 桶排序
- 外部排序 - k 路归并败者树
- 外部排序 - 最佳归并树 二、递归与分治
题型:
- 二分搜索/查找
- 大整数的乘法
- Strassen 矩阵乘法
- 棋盘覆盖
- 合并排序
- 快速排序
- 线性时间选择
- 最接近点对问题
- 循环赛日程表 三、动态规划
题型:
- 矩阵连乘问题
- 最长公共子序列
- 最大子段和
- 凸多边形最优三角剖分
- 多边形游戏
- 图像压缩
- 电路布线
- 流水作业调度
- 0-1 背包问题/背包九讲
- 最优二叉搜索树
- 动态规划加速原理
- 树型 DP 四、贪心
题型:
- 活动安排问题
- 最优装载
- 哈夫曼编码
- 单源最短路径
- 最小生成树
- 多机调度问题 五、回溯法
题型:
- 装载问题
- 批处理作业调度
- 符号三角形问题
- n 后问题
- 0-1 背包问题
- 最大团问题
- 图的 m 着色问题
- 旅行售货员问题
- 圆排列问题
- 电路板排列问题
- 连续邮资问题
六、搜索
- 枚举
- DFS
- BFS
- 启发式搜索 七、随机化
- 随机数
- 数值随机化算法
- Sherwood 舍伍德算法
- Las Vegas 拉斯维加斯算法
- Monte Carlo 蒙特卡罗算法 八、图论
- 遍历 DFS / BFS
- AOV / AOE 网络
- Kruskal 算法(最小生成树)
- Prim 算法(最小生成树)
- Boruvka 算法(最小生成树)
- Dijkstra 算法(单源最短路径)
- Bellman-Ford 算法(单源最短路径)
- SPFA 算法(单源最短路径)
- Floyd 算法(多源最短路径)
- Johnson 算法(多源最短路径)
- Fleury 算法(欧拉回路)
- Ford-Fulkerson 算法(最大网络流增广路)
- Edmonds-Karp 算法(最大网络流)
- Dinic 算法(最大网络流)
- 一般预流推进算法
- 最高标号预流推进 HLPP 算法
- Primal-Dual 原始对偶算法(最小费用流)18. Kosaraju 算法(有向图强连通分量)
- Tarjan 算法(有向图强连通分量)
- Gabow 算法(有向图强连通分量)
- 匈牙利算法(二分图匹配)
- Hopcroft-Karp 算法(二分图匹配)
- kuhn munkras 算法(二分图最佳匹配)
- Edmonds’ Blossom-Contraction 算法(一般图匹配) 九、数论
题型:
- 最大公约数
- 最小公倍数
- 分解质因数
- 素数判定
- 进制转换
- 高精度计算
- 整除问题
- 同余问题
- 欧拉函数
- 扩展欧几里得
- 置换群
- 母函数
- 离散变换
- 康托展开
- 矩阵
- 向量
- 线性方程组
- 线性规划 十、几何 题型:
- 凸包 - Gift wrapping
- 凸包 - Graham scan
- 线段问题
- 多边形和多面体相关问题 十一、NP完全
- 计算模型
- P 类与 NP 类问题
- NP 完全问题
- NP 完全问题的近似算法 十二、位运算 位操作包括:
- 取反(NOT)
- 按位或(OR)
- 按位异或(XOR)
- 按位与(AND)
- 移位: 是一个二元运算符,用来将一个二进制数中的每一位全部都向一个方向移动指定位,溢出的部分将被舍弃,而空缺的部分填入一定的值。
时间复杂度
1s 内能解决问题的数据规模:10^6 ~ 10^7
- O(n^2) 算法可以处理 10^4 级别的数据规模(保守估计,处理 1000 级别的问题肯定没问题)
- O(n) 算法可以处理 10^8 级别的数据规模(保守估计,处理 10^7 级别的问题肯定没问题)
- O(nlog n) 算法可以处理 10^7 级别的数据规模(保守估计,处理 10^6 级别的问题肯定没问题)