安徽农业大学计算机科学与技术专升本--串、数组和广义表.pptVIP

安徽农业大学计算机科学与技术专升本--串、数组和广义表.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
安徽农业大学计算机科学与技术专升本--串、数组和广义表.ppt

i 若n为主串长度,m为子串长度,最坏情况是 BF算法时间复杂度 主串前面n-m个位置都部分匹配到子串的最后一位,即这n-m位各比较了m次 最后m位也各比较了1次 总次数为:(n-m)*m+m=(n-m+1)*m 若mn,则算法复杂度O(n*m) 例: S=‘0000000001’,T=‘0001’,pos=1 KMP(Knuth Morris Pratt)算法 /~knuth/ 《计算机程序设计艺术 第1卷 基本算法》???98元 《计算机程序设计艺术 第2卷 半数值算法》 98元 《计算机程序设计艺术 第3卷 排序与查找》 98元 利用已经部分匹配的结果而加快模式串的滑动速度? 且主串S的指针i不必回溯!可提速到O(n+m)! S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ S=‘a b a b c a b c a c b a b’ T=‘a b c a c’ i i i k k a b a a b c k i i KMP算法设计思想(了解) 串操作应用举例--文本编辑 文本可被看作一个字符串,称为文本串 页则是文本串的子串 行又是页的子串。 页号 起始行号 页表 ………… 行号 起始地址 长度 行表 ………… 本节所讨论的数组与高级语言中的数组区别:  高级语言中的数组是顺序结构;  而本章的数组既可以是顺序的,也可以是链式结构,用户可根据需要选择。 4.2 数组 数组的抽象数据类型 数据对象: 数据关系: ADT Array { 基本操作: (1) InitArray (A,n,bound1, ?boundn) //构造数组A (2) DestroyArray (A) // 销毁数组A (3) Value(A,e,index1,…,indexn) //取数组元素值 (4) Assign (A,e,index1,…,indexn) //给数组元素赋值 }ADT Array 一维数组 35 27 49 18 60 54 77 83 41 02 0 1 2 3 4 5 6 7 8 9 l l l l l l l l l l LOC(i) = LOC(i-1)+l = a+i*l LOC(i) = LOC(i-1)+l = a+i*l, i 0 a, i = 0 a+i*l a 二维数组 以行序为主序 C, PASCAL 数组的顺序存储 以列序为主序 FORTRAN a[n][m] 设数组开始存放位置 LOC( 0, 0 ) = a LOC ( j, k ) = a + j * m + k 二维数组的行序优先表示 ① ② ③ 三维数组 按页/行/列存放,页优先的顺序存储 a[m1][m2] [m3] 各维元素个数为 m1, m2, m3 下标为 i1, i2, i3的数组元素的存储位置: LOC ( i1, i2, i3 ) = a +  i1* m2 * m3 + i2* m3 + i3 前i1页总 元素个数 第i1页的 前i2行总元素个数 第 i2 行前 i3 列元素个数 三维数组 各维元素个数为 m1, m2, m3, …, mn 下标为 i1, i2, i3, …, in 的数组元素的存储位置: n维数组 n维数组 设有一个二维数组A[m][n]按行优先顺序存储,假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置?脚注(10)表示用10进制表示。 设数组元素A[i][j]存放在起始地址为Loc ( i, j ) 的存储单元中 ∵ Loc ( 2, 2 ) = Loc ( 0, 0 ) + 2 * n + 2 = 644 + 2 * n + 2 = 676. ∴ n = ( 676 - 2 - 644 ) / 2 = 15 ∴ Loc ( 3, 3 ) = Loc ( 0, 0 ) + 3 * 15 + 3 = 644 + 45 + 3 = 692. 练习 设有二维数组A[10,20],其每个元素占两个字节, A[0

文档评论(0)

heroliuguan + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8073070133000003

1亿VIP精品文档

相关文档