)
1. 算法概述算法是解决特定问题的一系列清晰指令。它是计算机科学的核心决定了程序的效率和性能。2. 算法复杂度分析评估算法性能的两个主要指标是时间复杂度和空间复杂度通常使用大O表示法来描述。时间复杂度衡量算法执行时间随输入规模增长的变化趋势。空间复杂度衡量算法执行过程中所需存储空间随输入规模增长的变化趋势。3. 常见算法分类3.1 排序算法比较排序冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序。非比较排序计数排序、桶排序、基数排序。3.2 搜索算法线性搜索顺序遍历查找。二分搜索要求数据有序时间复杂度为 O(log n)。深度优先搜索 (DFS)适用于图的遍历、路径查找。广度优先搜索 (BFS)适用于最短路径、层级遍历。3.3 图算法最短路径Dijkstra 算法、Bellman-Ford 算法、Floyd-Warshall 算法。最小生成树Prim 算法、Kruskal 算法。拓扑排序用于有向无环图 (DAG)。3.4 动态规划将复杂问题分解为重叠子问题通过记忆化或制表法避免重复计算。经典问题背包问题、最长公共子序列、最长递增子序列、编辑距离。3.5 贪心算法每一步都做出当前看来最优的选择希望导致全局最优解。适用场景活动选择问题、霍夫曼编码、最小生成树Prim, Kruskal。3.6 分治算法将问题分解为多个子问题递归求解再合并结果。经典案例归并排序、快速排序、二分搜索。4. 算法设计范式暴力枚举尝试所有可能解。递归与回溯通过递归尝试所有可能性不满足条件时回溯。减治法将问题规模减小如二分搜索。变换法将问题转换为已知问题。5. 算法选择策略理解问题明确输入、输出和约束条件。分析数据规模根据数据量级选择合适复杂度的算法。考虑数据结构选择与算法匹配的数据结构如堆、哈希表、并查集。权衡时空在时间效率和空间消耗之间取得平衡。编码实现注意边界条件和特殊情况处理。测试验证使用多种测试用例验证正确性。6. 学习资源与建议经典书籍《算法导论》、《算法第4版》。在线平台LeetCode、Codeforces、AtCoder 用于刷题练习。学习建议从理解基本思想入手动手实现经典算法再尝试解决变体问题。