数据结构——关于KMP算法的效率分析
来源:互联网 发布:如何关闭qq游戏端口 编辑:程序博客网 时间:2024/04/30 14:55
通常的KMP算法可以描述如下,不知道的可以查相关资料。
从S的pos位置开始寻找字串T
int Index_KMP(String S,String T,int pos)
{
i=pos;j=1;//这里的串的第1个元素下标是1
while(i<=S.Length && j<=T.Length)
{
if(j==0 || S[i]==T[j]){i++;j++;}
else j=next[j];//i不变(不回溯),j跳动
}
if(j>T.Length) return i-T.Length;//匹配成功
else return 0;
}
假设n=S.Length m=T.Length (m<=n)
许多数据结构的书上说该算法效率为O(m),却没有说明白。
查了些资料,其效率分析还是蛮有技巧的。其实主要在于while循环,每次if比较成功后,i++,j++,由于i一直递增,所以显然,由于s的length为n,该成功匹配执行的最大次数为n,所以j最多递增了n次,而由于if比较失败后 j=next[j],这里j至少是要减1的,所以,因为j最多增了n次,所以j=next[j]也最多执行了n次,所以这个while循环中的if其实最多执行了2n次,
所以这个while循环的时间复杂度为O(n)。
有时候,在我们对于不定次数的循环的时间复杂度分析比较困难的时候,可以采取依靠某个变量来决定算法的复杂度。
- 数据结构——关于KMP算法的效率分析
- KMP算法的效率分析
- 数据结构关于KMP算法
- 数据结构——KMP算法的实现
- 数据结构——KMP算法
- 数据结构——KMP算法
- 数据结构——关于KMP算法中next函数的详细解析
- Java数据结构应用——算法的效率
- 数据结构(关于串的KMP匹配算法及其改进)
- 关于KMP算法的理解——文本匹配算法
- 数据结构——KMP算法C++版
- 数据结构字符串匹配——KMP算法
- 数据结构之——KMP算法
- 数据结构上机——KMP算法
- 关于c语言数据结构/kmp算法
- 嵌入式C++——关于C++的效率分析
- 嵌入式C++——关于C++的效率分析(顶嵌开源)
- 嵌入式C++——关于C++的效率分析
- sizeof 用法总结2
- POJ 1019 Number Sequence
- Launcher App:墙纸太大造成设置墙纸时产生“OutOfMemoryError: bitmap size exceeds VM budget”
- 数据库连接字符串大全 之 SQL服务器篇
- about the storageof variables (arm7 platform)
- 数据结构——关于KMP算法的效率分析
- SQL Server中, DateTime (日期)型操作的 SQL语法(转载)
- extjs 根据不同的操作动态替换panel上的tbar
- C++文件流操作(耦合)
- 打造极速MyEclipse
- .net按格式导出到.txt文件
- wave音频数据的格式
- 声音的播放——MCI的使用
- 記号の読み方