排序算法: 将一组元素按照一定的顺序排列。
冒泡排序(Bubble Sort)
选择排序(Selection Sort)
插入排序(Insertion Sort)
快速排序(Quick Sort)
归并排序(Merge Sort)
堆排序(Heap Sort)
查找算法: 在一组数据中找到特定元素的位置。
顺序查找(Sequential Search)
二分查找(Binary Search)
图算法: 处理图结构的算法。
深度优先搜索(Depth-First Search,DFS)
广度优先搜索(Breadth-First Search,BFS)
最短路径算法(Dijkstra、Floyd-Warshall)
最小生成树算法(Prim、Kruskal)
动态规划: 通过拆分问题,将其划分为子问题,通过求解子问题来求解原问题。
背包问题(0/1 背包、多重背包)
最长公共子序列(Longest Common Subsequence)
最短编辑距离(Edit Distance)
贪心算法: 每一步都采取当前状态下最优的选择。
哈夫曼编码(Huffman Coding)
最小生成树算法中的 Prim 和 Kruskal 算法
字符串匹配算法: 在一个字符串中查找一个子串。
暴力匹配算法
KMP 算法(Knuth-Morris-Pratt)
Boyer-Moore 算法
位运算: 对二进制位进行操作的算法。
与、或、异或等位运算
位操作的一些高级技巧
数论算法: 处理整数的算法。
欧几里得算法(求最大公约数)
质数相关算法
分治算法: 将一个问题划分成多个子问题,分别求解,再将结果合并。
归并排序
快速排序
棋盘覆盖问题
搜索算法: 在一个问题空间中寻找解的算法。
A* 算法
模拟退火算法