算法基础

算法基础

算法基础目录 #

第一部分 算法入门 #

算法概述 #

  • 算法的定义与特征
  • 算法与程序的区别
  • 算法的表示方法
  • 算法设计的基本步骤

算法复杂度分析 #

  • 时间复杂度的概念
  • 空间复杂度的概念
  • 渐进符号(大O、大Ω、大Θ)
  • 最好、最坏和平均情况分析
  • 递归算法的复杂度分析

第二部分 基本数据结构 #

线性数据结构 #

  • 数组与链表
  • 栈与队列
  • 哈希表
  • 字符串

非线性数据结构 #

  • 树的基本概念
  • 二叉树与二叉搜索树
  • 堆与优先队列
  • 图的基本概念

第三部分 基础算法设计 #

排序算法 #

  • 冒泡排序与选择排序
  • 插入排序与希尔排序
  • 归并排序
  • 快速排序
  • 堆排序
  • 计数排序与基数排序

查找算法 #

  • 顺序查找
  • 二分查找
  • 哈希查找
  • 树形查找(BST、AVL、红黑树)

第四部分 算法设计范式 #

分治算法 #

  • 分治策略的基本思想
  • 经典分治算法实例
  • 分治算法的复杂度分析

贪心算法 #

  • 贪心选择性质
  • 最优子结构
  • 贪心算法的应用实例

动态规划 #

  • 动态规划的基本原理
  • 最优子结构与重叠子问题
  • 记忆化搜索与递推实现
  • 经典动态规划问题

回溯算法 #

  • 回溯法的基本框架
  • 剪枝优化技术
  • 经典回溯问题求解

第五部分 图算法 #

图的遍历 #

  • 深度优先搜索(DFS)
  • 广度优先搜索(BFS)
  • 遍历算法的应用

最短路径算法 #

  • Dijkstra算法
  • Bellman-Ford算法
  • Floyd-Warshall算法

最小生成树 #

  • Prim算法
  • Kruskal算法

网络流算法 #

  • 最大流问题
  • 最小割问题
  • Ford-Fulkerson方法

第六部分 高级专题 #

字符串匹配算法 #

  • 朴素字符串匹配
  • KMP算法
  • Boyer-Moore算法
  • Rabin-Karp算法

数论算法 #

  • 质数判定与质因数分解
  • 最大公约数与最小公倍数
  • 模运算与快速幂

计算几何基础 #

  • 点、线、面的基本运算
  • 凸包算法
  • 线段相交判定

近似算法 #

  • 近似算法的性能度量
  • 经典问题的近似解法
  • 随机化算法

第七部分 算法实践 #

算法实现技巧 #

  • 边界条件处理
  • 错误处理机制
  • 代码优化方法

算法测试与调试 #

  • 测试用例设计
  • 性能测试方法
  • 常见错误分析

算法选择策略 #

  • 问题分析与算法匹配
  • 时间与空间的权衡
  • 实际应用场景考量