算法学习¶
算法分类与路线¶
暴力算法¶
- 简单模拟
- 简单递推
- 线性枚举
基础排序¶
- 冒泡排序
- 选择排序
- 插入排序
- 计数排序
- 接口调用(sort函数)
- 比较函数
- 结构体排序
5. 接口调用(sort函数)示例(C++)¶
#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
bool cmp(int a, int b) {
return a < b; // 升序排序
}
int main() {
vector<int> arr = {5, 2, 9, 1, 5, 6};
sort(arr.begin(), arr.end(), cmp);
for (int num : arr) {
cout << num << " ";
}
return 0;
}
基础数据结构¶
- 顺序表(数组)
- 单链表
- 双链表
- 栈
- 队列
- 二叉树
- 图
基本搜索算法¶
- DFS(深度优先搜索)
- BFS(广度优先搜索)
基础动态规划(DP)¶
- 线性DP
- 记忆化搜索
- 最大连续子序列
- 最长单调子序列
- 最长公共子序列
- 二维DP
- 多维DP
先穷举,后剪枝,之后再迭代
基础优化算法¶
- 贪心
- 哈希
- 前缀和与差分
- 双指针
- 滑动窗口
- 二分查找
进阶排序¶
- 快速排序
- 归并排序
进阶数据结构¶
- 哈希表
- 字符串哈希
- 堆
- 并查集
- 树状数组
- ST表
- 线段树
- 字典树
进阶动态规划¶
- 01背包
- 完全背包
- 多重背包
- 分组背包
- 书上分组背包
- 基础树形背包
- 树的重心
- 区间DP
- 数位DP
- 状态压缩DP
- 博弈论
数学¶
- 初等数论
- 容斥原理
- 二项式定理
图论算法¶
- 最短路
- 最小生成树
- 拓扑排序
- 网络流
- 欧拉回路
- 强连通与双连通分析
字符串算法¶
- KMP