- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构第四章串a教学
数 据 结 构 第4章 串(String) 若干术语: 串的抽象数据类型定义(参见教材P71) 复习:C语言中常用的串运算 例1: 设 s =’I AM A STUDENT’, t =’GOOD’, q=’WORKER’。求: 提问: 当s =’I AM A STUDENT’时, INDEX(s,’A’,pos)=3,若想有哪些信誉好的足球投注网站后面那个‘A’怎么办? 例2:设 s =’I AM A STUDENT’, t =’GOOD’,求: Concat( SubString(s,6,2), Concat( t,SubString(s,7,8) ) ) =? 串的特点: 串的逻辑结构和线性表极为相似,区别仅在于串的数据对象约束为字符集; 串的基本操作和线性表差别很大 串的基本操作中,通常以“串的整体”作为操作对象。 4.2 串的表示和实现 定长顺序存储特点:用一组连续的存储单元来存放串,直接使用定长的字符数组来定义,数组的上界预先给出,故称为静态存储分配。 例:用顺序存储方式编写求子串函数SubString(Sub,S,pos,len) 堆分配存储特点:仍用一组连续的存储单元来存放串,但存储空间是在程序执行过程中动态分配而得。 例1:编写建堆函数 (参见教材P76) 例2:用“堆”方式编写串插入函数 (参见教材P75) 链式存储特点 :用链表存储串值,易插入和删除。 4.3 串的模式匹配算法 BF算法的实现—即编写Index(S,T,pos)函数 例2: S=‘ababcabcacbab’,T=‘abcac’,求Index(S,T,5) (参见教材P79) BF算法的时间复杂度 讨论: 若n为主串长度,m为子串长度,则串的BF匹配算法最坏的情况下需要比较字符的总次数为 KMP算法(特点:速度快) ① KMP算法设计思想 ② KMP算法的推导过程 ③ KMP算法的实现 (关键技术:计算next[j]) ④ KMP算法的时间复杂度 ② KMP算法的推导过程:(见教材P81) 新起点 k怎么求? (1) next[ j ]有何物理意义? 例: 模 式 串 T: a b a a b c a c 可能失配位 j: 1 2 3 4 5 6 7 8 新匹配位k=next[j] : 求解next[j]流程图(递推) 注:递归与递推的区别: ③ KMP算法的实现—即Index( )操作的实现 第一步,先把模式T所有可能的失配点j 所对应的next[j]计算出来; 第二步:执行定位函数Index_kmp (与BF算法模块非常相似) 例2: S=‘ababcabcacbab’,T=‘abcac’,求Index(S,T,5) (参见教材P79) ③ KMP算法的实现—即Index( )操作的实现 第一步,先把模式T所有可能的失配点j 所对应的next[j]计算出来; 第二步:执行定位函数Index_kmp (与BF算法模块非常相似) ④ KMP算法的时间复杂度 注意:由于BF算法在一般情况下的时间复杂度也近似于O(n+m),所以至今仍被广泛采用。 第4章小结 全书一大亮点! 奇妙的结果: k 仅与模式串T有关! 请抓住部分匹配时的两个特征: 两式联立可得:‘T1…Tk-1’=‘Tj-(k-1) …Tj-1’ S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ i k 则T的k-1~1位=S前i-1~i-(k-1)位 即(4-2)式含义 设目前打算与T的第k字符开始比较 (1) (2) ‘T1…Tk-1’ 则T的j-1~j-(k-1)位= S前i-1~i-(k-1)位 即(4-3)式含义 i k j S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ 刚才肯定是在S的i处和T的第j字符 处失配 ‘Tj-(k-1) …Tj-1’ 截取一段,但k有限制,1kj k是追求的新起点 加速的前提:T首与Tj处有相同子串 注意:j 为当前已知的失配位置,我们的目标是计算新起点 k。 式中仅剩一个未知数k,理论上已可解! 根据模式串T的规律: ‘T1…Tk-1’=‘Tj-(k-1) …Tj-1’ 由当前失配位置j(已知) ,可以归纳出计算新起点 k的表达式。 next[ j ]= 0 当j=1时 //不比较 max { k | 1kj 且‘T1…Tk-1’=‘Tj-(k-1) …Tj-1’ } 1
您可能关注的文档
- 北京壁挂炉维修壁挂炉如何保养.ppt
- 俄罗斯族上课资料.ppt
- 克和千克的认识31.ppt
- 历史:《梭伦改革》单元复习人教版选修一精品.ppt
- 名二子说,.ppt
- 叉车课程.ppt
- 四年级下科学第四单元第5课课件.ppt
- 在烈日和暴雨下1.ppt
- 基于车流量动态变化的智能交通控制系统.ppt
- 北师大版七年级上4.2比较线段的长短.ppt
- 中国特种加工机床行业市场发展前景及发展趋势与投资战略研究报告(2024-2030).docx
- 中国儿童薄棉袜行业市场发展前景及发展趋势与投资战略研究报告(2024-2030).docx
- 中国射出机周边设备行业市场发展前景及发展趋势与投资战略研究报告(2024-2030).docx
- 中国铁制品展示架行业市场发展前景及发展趋势与投资战略研究报告(2024-2030).docx
- 中国摇粒绒毯子行业市场发展前景及发展趋势与投资战略研究报告(2024-2030).docx
- 中国方形可调内径量规行业市场发展前景及发展趋势与投资战略研究报告(2024-2030).docx
- 成品油行业市场风险投资发展分析及投资趋势预测研究报告(2024-2030).docx
- 经典英文唯美的爱情语录.docx
- 六年级上册语文教学工作计划.docx
- 庆祝建团100周年演讲稿8篇.docx
文档评论(0)