Algorithm


Algorithm

算法,简单来说,就是解决问题的“步骤或方法”
如果你把问题看作“做一件事”,算法就是“做这件事的明确步骤指南”

它有几个关键特征

  1. 有限性(Finiteness):步骤是有限的,不会无限循环
  2. 确定性(Definiteness):每一步都明确、可执行
  3. 输入(Input):有零个或多个输入
  4. 输出(Output):至少产生一个输出或结果
  5. 有效性(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)
  • 双指针/滑动窗口(数组、字符串)
  • 线段树/树状数组(区间查询)