Files
Data-Structure/Algorithm/readme.md
2025-08-28 21:17:28 +08:00

171 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

你问的是“把所有的算法和其概念都列举一下”——这个范围其实**无限大** 🤯,因为“算法”不仅包括基础数据结构和经典问题(排序、查找、图算法等),还包括数论、密码学、机器学习、人工智能、分布式、量子计算里的算法。严格说全列举是不可能的。
不过我可以给你一个**系统的分类目录**,把常见且重要的算法类型和它们的基本概念总结出来,这样你能有一个“地图”,以后可以往下逐步展开。
---
## 📚 常见算法分类与概念
(从基础到进阶)
### 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**。
* 以后遇到具体领域(比如机器学习、密码学),再深入相关算法。
---
要不要我帮你整理一个 **“学习路线图”**(比如第一阶段学什么,第二阶段学什么),而不是一大堆罗列?这样更方便你系统掌握。