程序=数据结构+算法,所以这里记录下算法的点点滴滴。
基础
状态机
有限状态(自动)机, Finite-State Machine/FSM,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
搜索
折半搜索/二分搜索/Binary Search
是一种在有序数组中查找某一特定元素的搜索算法.(预排序数组的查找)
复杂度:
- 时间复杂度: O(log n)
- 空间复杂度: O(1)
两种实现
- 递归版本
- While循环
参考BinarySearch.java
其他
指数补偿
即exponential backoff, 通常用于网络和传输协议,例如重试等
Levenshtein Distance/莱文斯坦距离
- 指两个字符串之间由一个转换成另一个所需的最少编辑操作次数。允许编辑的操作包括: 替换、插入、删除。
- 可以使用动态规划方法测量LD的值
应用场景:
- 拼写检查
- 抄袭识别
- 语音识别
- 及类似的字符串匹配场景,比如脱敏数据和明文数据的匹配