Algorithm
Algorithm
算法,简单来说,就是解决问题的“步骤或方法”
如果你把问题看作“做一件事”,算法就是“做这件事的明确步骤指南”
它有几个关键特征
- 有限性(Finiteness):步骤是有限的,不会无限循环
- 确定性(Definiteness):每一步都明确、可执行
- 输入(Input):有零个或多个输入
- 输出(Output):至少产生一个输出或结果
- 有效性(Effectiveness):每一步都能用有限时间完成
常见算法
排序算法
用于将数据按某种顺序排列,是最基础的算法之一
- Bubble Sort
- Counting Sort
- Insertion Sort
- Qucik Sort
- Selection Sort
- Bucket Sort
- Heap Sort
- Merge Sort
- Redix Sort
- Shell Sort
查找算法
用于在数据中查找目标元素
- BinarySearch
- HashSearch
- InterpolationSearch
- LinearSearch
图算法
用于处理网络、地图、依赖关系等问题
- DFS
- BFS
- Dijkstra
- Bellman-Ford
- Floyd-Warshall
- Kruskal/Prim
暴力枚举
小规模问题,尝试所有可能
贪心算法
选择当前最优解,常用于优化问题
分治算法
将问题拆分称小问题,递归求解
动态规划
解决最优子结构和重叠子问题
回溯算法
用于枚举、组合、约束问题
数学/数论算法
常用于计算、密码学、游戏逻辑等
字符串算法
处理文本和模式匹配
- KMP(模式匹配)
- Rabin-Karp(哈希匹配)
- Trie树(字典树)
- 字符串哈希
高级/优化算法
高级数据结构配套算法
- 并查集Union-Find(图连通性)
- 优先队列/堆(任务调度、Dijkstra)
- 双指针/滑动窗口(数组、字符串)
- 线段树/树状数组(区间查询)