数据结构与算法概论 | 青训营笔记

186 阅读5分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记

数据结构

一、顺序线性表:向量 Vector

二、单链表 Singly Linked List

  1. 双向链表 Double Linked Lists
  2. 静态链表 Static List
  3. 对称矩阵 Symmetric Matrix
  4. 稀疏矩阵 Sparse Matrix 三、哈希表 Hash Table
  5. 散列函数 Hash Function
  6. 解决碰撞/填充因子 Collision Resolution 四、栈和队列 Stack & Queue
  7. 广义表 Generalized List/GList
  8. 双端队列 Deque 五、队列 Queue
  9. 链表实现 Linked List Implementation
  10. 循环数组实现 ArrayQueue
  11. 双端队列 Deque
  12. 优先队列 Priority Queue
  13. 循环队列 Circular Queue 六、字符串 String
  14. KMP 算法
  15. 有限状态自动机
  16. 模式匹配有限状态自动机
  17. BM 模式匹配算法
  18. BM-KMP 算法
  19. BF 算法 七、树 Tree
  20. 二叉树 Binary Tree
  21. 并查集 Union-Find
  22. Huffman 树 八、数组实现的堆 Heap
  23. 极大堆和极小堆 Max Heap and Min Heap
  24. 极大极小堆
  25. 双端堆 Deap
  26. d 叉堆 九、树实现的堆 Heap
  27. 左堆 Leftist Tree/Leftist Heap
  28. 扁堆
  29. 二项式堆
  30. 斐波那契堆 Fibonacco Heap
  31. 配对堆 Pairing Heap 十、查找 Search
  32. 哈希表 Hash
  33. 跳跃表 Skip List
  34. 排序二叉树 Binary Sort Tree
  35. AVL 树
  36. B 树 / B+ 树 / B* 树
  37. AA 树
  38. 红黑树 Red Black Tree
  39. 排序二叉堆 Binary Heap
  40. Splay 树
  41. 双链树 Double Chained Tree
  42. Trie 树
  43. R 树

算法

一、排序算法1. 冒泡排序
2. 插入排序
3. 选择排序
4. 希尔 Shell 排序
5. 快速排序
6. 归并排序
7. 堆排序
8. 线性排序算法
9. 自省排序
10. 间接排序
11. 计数排序
12. 基数排序
13. 桶排序
14. 外部排序 - k 路归并败者树
15. 外部排序 - 最佳归并树

  1. 冒泡排序
  2. 插入排序
  3. 选择排序
  4. 希尔 Shell 排序
  5. 快速排序
  6. 归并排序
  7. 堆排序
  8. 线性排序算法
  9. 自省排序
  10. 间接排序
  11. 计数排序
  12. 基数排序
  13. 桶排序
  14. 外部排序 - k 路归并败者树
  15. 外部排序 - 最佳归并树 二、递归与分治

题型:

  1. 二分搜索/查找
  2. 大整数的乘法
  3. Strassen 矩阵乘法
  4. 棋盘覆盖
  5. 合并排序
  6. 快速排序
  7. 线性时间选择
  8. 最接近点对问题
  9. 循环赛日程表 三、动态规划

题型:

  1. 矩阵连乘问题
  2. 最长公共子序列
  3. 最大子段和
  4. 凸多边形最优三角剖分
  5. 多边形游戏
  6. 图像压缩
  7. 电路布线
  8. 流水作业调度
  9. 0-1 背包问题/背包九讲
  10. 最优二叉搜索树
  11. 动态规划加速原理
  12. 树型 DP 四、贪心

题型:

  1. 活动安排问题
  2. 最优装载
  3. 哈夫曼编码
  4. 单源最短路径
  5. 最小生成树
  6. 多机调度问题 五、回溯法

题型:

  1. 装载问题
  2. 批处理作业调度
  3. 符号三角形问题
  4. n 后问题
  5. 0-1 背包问题
  6. 最大团问题
  7. 图的 m 着色问题
  8. 旅行售货员问题
  9. 圆排列问题
  10. 电路板排列问题
  11. 连续邮资问题

六、搜索

  1. 枚举
  2. DFS
  3. BFS
  4. 启发式搜索 七、随机化
  5. 随机数
  6. 数值随机化算法
  7. Sherwood 舍伍德算法
  8. Las Vegas 拉斯维加斯算法
  9. Monte Carlo 蒙特卡罗算法 八、图论
  10. 遍历 DFS / BFS
  11. AOV / AOE 网络
  12. Kruskal 算法(最小生成树)
  13. Prim 算法(最小生成树)
  14. Boruvka 算法(最小生成树)
  15. Dijkstra 算法(单源最短路径)
  16. Bellman-Ford 算法(单源最短路径)
  17. SPFA 算法(单源最短路径)
  18. Floyd 算法(多源最短路径)
  19. Johnson 算法(多源最短路径)
  20. Fleury 算法(欧拉回路)
  21. Ford-Fulkerson 算法(最大网络流增广路)
  22. Edmonds-Karp 算法(最大网络流)
  23. Dinic 算法(最大网络流)
  24. 一般预流推进算法
  25. 最高标号预流推进 HLPP 算法
  26. Primal-Dual 原始对偶算法(最小费用流)18. Kosaraju 算法(有向图强连通分量)
  27. Tarjan 算法(有向图强连通分量)
  28. Gabow 算法(有向图强连通分量)
  29. 匈牙利算法(二分图匹配)
  30. Hopcroft-Karp 算法(二分图匹配)
  31. kuhn munkras 算法(二分图最佳匹配)
  32. Edmonds’ Blossom-Contraction 算法(一般图匹配) 九、数论

题型:

  1. 最大公约数
  2. 最小公倍数
  3. 分解质因数
  4. 素数判定
  5. 进制转换
  6. 高精度计算
  7. 整除问题
  8. 同余问题
  9. 欧拉函数
  10. 扩展欧几里得
  11. 置换群
  12. 母函数
  13. 离散变换
  14. 康托展开
  15. 矩阵
  16. 向量
  17. 线性方程组
  18. 线性规划 十、几何 题型:
  19. 凸包 - Gift wrapping
  20. 凸包 - Graham scan
  21. 线段问题
  22. 多边形和多面体相关问题 十一、NP完全
  23. 计算模型
  24. P 类与 NP 类问题
  25. NP 完全问题
  26. NP 完全问题的近似算法 十二、位运算 位操作包括:
  27. 取反(NOT)
  28. 按位或(OR)
  29. 按位异或(XOR)
  30. 按位与(AND)
  31. 移位: 是一个二元运算符,用来将一个二进制数中的每一位全部都向一个方向移动指定位,溢出的部分将被舍弃,而空缺的部分填入一定的值。

时间复杂度

1s 内能解决问题的数据规模:10^6 ~ 10^7

  • O(n^2) 算法可以处理 10^4 级别的数据规模(保守估计,处理 1000 级别的问题肯定没问题)
  • O(n) 算法可以处理 10^8 级别的数据规模(保守估计,处理 10^7 级别的问题肯定没问题)
  • O(nlog n) 算法可以处理 10^7 级别的数据规模(保守估计,处理 10^6 级别的问题肯定没问题)

QQ截图20220607092110.png