Renewed Structure

This commit is contained in:
e2hang
2025-08-28 21:17:28 +08:00
parent b97f348a51
commit 1a5c4329b2
163 changed files with 312 additions and 0 deletions

170
Algorithm/readme.md Normal file
View File

@@ -0,0 +1,170 @@
你问的是“把所有的算法和其概念都列举一下”——这个范围其实**无限大** 🤯,因为“算法”不仅包括基础数据结构和经典问题(排序、查找、图算法等),还包括数论、密码学、机器学习、人工智能、分布式、量子计算里的算法。严格说全列举是不可能的。
不过我可以给你一个**系统的分类目录**,把常见且重要的算法类型和它们的基本概念总结出来,这样你能有一个“地图”,以后可以往下逐步展开。
---
## 📚 常见算法分类与概念
(从基础到进阶)
### 1. **基础算法**
* **排序算法**
* 冒泡排序相邻元素交换O(n²)。
* 插入排序逐个插入到有序区间O(n²)。
* 选择排序每次选择最小元素放到前面O(n²)。
* 归并排序分治合并O(n log n)。
* 快速排序:分区 + 递归O(n log n),最坏 O(n²)。
* 堆排序利用堆结构O(n log n)。
* 计数/桶/基数排序非比较排序O(n+k)。
* **查找算法**
* 顺序查找:挨个比对。
* 二分查找有序数组O(log n)。
* 哈希查找:哈希表平均 O(1)。
* 插值查找、斐波那契查找:二分的改进。
---
### 2. **递归与分治**
* 概念:将问题分解为规模更小的同类问题,再合并解。
* 典型归并排序、快速排序、二分查找、矩阵乘法Strassen、棋盘覆盖、FFT。
---
### 3. **动态规划DP**
* 概念:将大问题拆成重叠子问题,保存子问题解避免重复计算。
* 典型:
* 背包问题0-1、多重、完全
* 最长公共子序列 LCS。
* 最长上升子序列 LIS。
* 矩阵链乘。
* 状压 DP旅行商、集合覆盖
* 树形 DP。
---
### 4. **贪心算法**
* 概念:每一步都做局部最优选择,期望得到全局最优解。
* 典型:
* 活动选择问题。
* Huffman 编码。
* Kruskal / Prim最小生成树
* Dijkstra单源最短路径
---
### 5. **图论算法**
* **最短路径**
* Dijkstra非负权
* Bellman-Ford可处理负权
* Floyd-Warshall任意两点
* A\*(启发式搜索)。
* **最小生成树**
* Kruskal。
* Prim。
* **最大流 / 最小割**
* Ford-Fulkerson。
* Edmonds-Karp。
* Dinic。
* **匹配 / 覆盖**
* 匈牙利算法。
* Hopcroft-Karp。
---
### 6. **数论与密码学算法**
* 欧几里得算法gcd
* 扩展欧几里得ax+by=gcd
* 快速幂。
* 素数筛法(埃拉托斯特尼筛、线性筛)。
* RSA 加密(模幂运算)。
* 椭圆曲线加密。
---
### 7. **搜索算法**
* DFS深度优先搜索
* BFS广度优先搜索
* 回溯N 皇后、数独)。
* 分支限界法。
* 启发式搜索A\*、IDA\*)。
---
### 8. **字符串算法**
* KMP前缀函数
* Rabin-Karp哈希匹配
* Trie 树(字典树)。
* 后缀数组 / 后缀自动机 / 后缀树。
* AC 自动机(多模式匹配)。
* Manacher回文子串
---
### 9. **几何算法**
* 凸包Graham 扫描、Andrew 算法)。
* 线段相交判定。
* 最近点对。
* 扫描线算法。
* 计算几何中的旋转卡壳。
---
### 10. **并行与分布式算法**
* MapReduce。
* Paxos、Raft分布式一致性
* 并行前缀和scan
* 并行排序。
---
### 11. **机器学习与 AI 算法**
* 线性回归 / 逻辑回归。
* 决策树 / 随机森林。
* k-means 聚类。
* 支持向量机。
* 神经网络BP 算法、梯度下降)。
* 强化学习Q-learning
---
### 12. **其他重要算法**
* 并查集Union-Find
* 拓扑排序。
* 位运算算法lowbit、快速加法
* 蒙特卡洛 / 拉斯维加斯(随机化算法)。
* Bloom Filter。
* 哈希算法MD5, SHA
---
🔑 **总结**
* **算法的世界很大**,不同领域有成百上千种算法。
* 学习顺序建议:**排序 → 查找 → 分治/递归 → DP → 贪心 → 图论 → 高级专题(字符串/几何/数论/AI**。
* 以后遇到具体领域(比如机器学习、密码学),再深入相关算法。
---
要不要我帮你整理一个 **“学习路线图”**(比如第一阶段学什么,第二阶段学什么),而不是一大堆罗列?这样更方便你系统掌握。