严飞软件技术基础沈被娜习题解答.docVIP

  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文档。上传文档
查看更多
严飞软件技术基础沈被娜习题解答

第二章 2.1 什么是数据结构?它对算法有什么影响? 数据结构是指同一数据对象中各数据元素间存在的关系。 数据结构对算法的影响:算法的实现必须借助程序设计语言中提供的数据类型及其运算。一个算法的效率往往与数据的表达形式有关,因此数据结构的选择对数据处理的效率起着至关重要的作用。它是算法和程序设计的基本部分,它对程序的质量影响很大。 何谓算法?它与程序有何区别? 广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”。计算机算法是通过计算机能执行的算法语言来表达的。 和程序的区别:一个程序包括两个方面的内容: (1)对数据的描述,即数据结构。 (2)对操作的描述,即算法。 所以算法是程序的一个要素。 2.3 何谓频度,时间复杂度,空间复杂度?说明其含义。 频度:在某个算法中某个语句被重复执行的次数就是此语句的频度。 时间复杂度:是用来估算一个算法的执行时间的量,以算法中频度最大的语句来度量。 空间复杂度:指在算法中所需的辅助空间的单元,而不包括问题的原始数据占用的空间。 2.4试编写一个求多项式Pn =anxn +an-1 xn-1+a1x+a0的值Pn(x 0)的算法,要求用乘法次数最少,并说明算法中主要语句的执行次数及整个算法的时间复杂度。 A=(a0, a1 ……an) mul = 1sum=a0 for i=1 to n mul = mul * x // x sum = A[i]*mul + sum //求和 end(i) 进行了n次 时间复杂度为:2n2.5计算下列各片段程序中XX+1执行次数 (1) or i=1 to n for j=1 to i for k=1 to j x←x+1 end(k) end(j) end(i) 执行次数:n*n*n (2) i←1 while in do x←x+1 i←i+1 end(while) 执行次数:n-1 (3) for i=1 to n j←1 for k=j+1 to n x← x+1 end(k) end(i) 执行次数:n*(n-1)2.6 数据的存储结构主要有哪两种?它们之间的本质区别是什么? 数据的存储结构:向量和链表。 本质区别: 向量是连续存放的,其存储空间是静态分配的,以存放顺序来表达元素的前后件的关系。 链式存储结果不需要一组连续的存储单元,其数据元素可以分散存放在存储空间中,其元素关系由指针来指向。 2.8已知线性表La1, a2, … , an ) 元素按递增有序排列。用向量作为存储结构,试编写算法:删除表中值在c与d之间的元素… L[s+m] ← L[t+m] // s+m = t -1 m = t – s - 1 L[s + i ] ← L[t + i ] // i = 0 to t-s-1 i=1; // i 从1 循环到n s = -1; // 第1个大于等于c的元素序号 t = -1; // 第1个大于d的元素序号 for i = 1 to n step -1 if s ==-1 and L[i]=c // 找到第1个大于等于c的元素 s = i if t == -1 and L[i] d // 找到第1个大于d的元素 t = i ; end (i) if s != -1 and t !=-1 i = s while i t and i + t – s =n L[i] = L [i + t – s ] i++ end(while) else return(错误 没有找到 元素在c和d之间) end(if) for j=c to n-d+c L[j]--L[j+d-c]//把j+d-c项给j End(j) N--n-d+c//所有项数减少 Return 2.9 线性表A,B中的元素为字符串类型,用向量结构存储,试编写算法,判断B是否为A的子序列(例如A=ENGLISH ,B=LIS ,则B为A的子序列) A: B: i=1 检查A中第1个元素开始的字符串是否与B匹配 i=2 检查A中第2个元素开始的字符串是否与B匹配 … … i= m – n + 1 检查 A中 第(m-n+1)个元素开始的字符串是否与B匹配 A[m] B[n] if ( mn ) then return error for ( i =1; i= m-n+1; i++) for (j = 1; j= n ; j++) if (A[i+j-1 ] != B[j ]) break; end(j) if jn then return( A字符

文档评论(0)

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

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

1亿VIP精品文档

相关文档