简单匹配算法和kmp算法

简单匹配算法和kmp算法

ID:20503333

大小:72.50 KB

页数:5页

时间:2018-10-13

简单匹配算法和kmp算法_第1页
简单匹配算法和kmp算法_第2页
简单匹配算法和kmp算法_第3页
简单匹配算法和kmp算法_第4页
简单匹配算法和kmp算法_第5页
资源描述:

《简单匹配算法和kmp算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、实现字符串匹配的简单匹配算法和KMP算法,并且使用相同的比较字符串重复比较至少5000次,计算两者的时间差别。实验要求:完成实验内容要求,编写程序实现。提交报告,报告分三部分内容:1)自己是怎么做的?遇到什么问题,怎样解决的?2)用了哪些数据,得到什么结果?程序结果是不是跟你想的一样?为什么不一样?3)还有哪些值得改进或者不懂的?一、实验方案源程序的头文件定义为:#include#include#include#include又作出以下宏定义方便编程:#defineOVERFLOW-2#define

2、OK1#defineMAXSTRLEN255源程序中的各个函数原型如下所示:typedefcharSString[MAXSTRLEN+1];intIndex(SStringS,SStringT,intpos){//按照普通匹配查找方式查找模式串inti=pos;intj=1,k=0;while(i<=(int)S[0]&&j<=(int)T[0]){if(S[i]==T[j]){++i;++j;}else{i=i-j+2;j=1;}k++;}printf("普通匹配查找的时间复杂度为%d。",k);if(j>T[0])returni-T[0];elsereturn0;}/

3、/Indexvoidget_next(SStringT,intnext[]){//求KMP算法中的next函数值,并存入数组next[]inti=1;next[1]=0;intj=0;while(i<(int)T[0]){if(j==0

4、

5、T[i]==T[j]){++i;++j;if(T[i]!=T[j])next[i]=j;elsenext[i]=next[j];}elsej=next[j];}}//nextintIndex_KMP(SStringS,SStringT,intpos){//KMP算法的实现过程intnext[MAXSTRLEN];inti=pos;intj=

6、1,k=0;while(i<=(int)S[0]&&j<=(int)T[0]){if(j==0

7、

8、S[i]==T[j]){++i;++j;}else{get_next(T,next);j=next[j];}k++;}printf("KMP匹配查找的时间复杂度为%d。",k);if(j>(int)T[0])returni-T[0];elsereturn0;}//Index_KMP源程序中主函数如下:voidmain(){SStringT,S;intp,i,j,k1,k2;p=1;i=1;j=1;printf("请输入字符串匹配主串:");gets(&S[1]);prin

9、tf("请输入字符串匹配模式串:");gets(&T[1]);for(i=1;S[i]!=NULL;i++){S[0]=(int)(i);}printf("字符串匹配中主串:");puts(&S[1]);for(j=1;T[j]!=NULL;j++){T[0]=(int)(j);}printf("字符串匹配中模式串:");puts(&T[1]);printf("——————————普通算法————————————");k1=Index(S,T,p);printf("普通匹配算法得模式串位置:%d",k1);printf("——————————KMP

10、算法————————————");k2=Index_KMP(S,T,p);printf("KMP算法得模式串位置:%d",k2);}一、实验结果和数据处理(1)程序运行时,输入主串为S=’qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqws‘;模式串为T=’qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

11、qqqqqqqqqqqqqqqqqqqqqws’;运行界面如下:小结:得到普通匹配算法的时间复杂度为3793,而KMP算法的时间复杂度为174,显然在匹配算法中,KMP算法优于普通算法,节省了时间以及资源。(2)当输入主串为S=’ASTRINGSEARCHINGEXAMPLECONSISTINGOFSIMPLETEXT’;模式串为T=’STING’运行结果如下:小结:当主串重复出现的字符不多时,KMP算法的优势无法明显体现出来。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。