目录
一、七大排序算法
二、大整数计算
三、编kmp辑距离问题
四、kmp算法
五、dijkstra算法
六、0/1背包问题
一、七大排序算法
1 |
|
二、大整数计算
1 |
|
三、编辑距离问题
编辑距离,又称Levenshtein距离,是指两个子串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。请尝试写出一个算法来计算两个字符串的编辑距离。
1、当min(i,j)=0时,f(i,j)=max(i,j),一个字符串的长度为0,编辑距离是另一个字符串的长度
2、当a[i]=b[j]时,f(i,j)=f(i−1,j−1),比如xxcz和xyz的距离=xxc和xy的距离
3、否则,lev(i,j)为如下三项的最小值:
f(i−1,j)+1(在a中删除ai);
f(i,j−1)+1(在a中插入bj);
f(i−1,j−1)+1(在a中把ai替换bj),
1 |
|
时间复杂度O(nm), 空间复杂度O(nm)
四、kmp算法
给定两个字符串str和match,长度分别为N和M。实现一个算法,如果字符串str中含有子串match,则返回match在str中的开始位置,不含有则返回-1
1 |
|
算法详解 时间复杂度为O(m + n)
扩展:BM算法、Sunday算法。
五、dijkstra算法
迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。它解决的是带权重的有向图上单源最短路径问题。
1 |
|
六、0/1背包问题
0/1背包问题:满足总重量<=背包重量限制,使价值最大。
1 |
|