算法分析与设计之作业习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法分析与设计作业答案
第一章绪论
一填空
算法就是一组有穷的规则,它们规定了解决某一特定类型问题的一系列运算
2..算法具备五个重要特性:确定性、可实现性、数据输入、数据输出、有穷性
3. 要制定一个算法,一般要经过设计、确认、分析、编码、调试等阶段。
4. 算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
5.一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上。时间和空间资源。因而,算法的复杂性有时间复杂性和空间复杂性之分。
7.算法的时间复杂性函数用T(n)表示,它是问题的大小n 的函数。
8. n在不同的问题中有不同的表现形式。指出下列问题中n的计量。
1) 在数组中找值为c的分量,n表示数组中分量的个数
2) 两个矩阵相乘, n表示矩阵的阶
3) 一个数表的排序,n表示数组中元数的个数
4) 遍历一棵二叉树,n表示树中的结点数
9.最坏情况下的时间复杂性定义:W(n) = max{ T(n,I) } , I∈Dn
10. 平均情况下的时间复杂性定义:A(n)=∑P( I )T(n,I) I∈Dn
11.最具有可操作性和实际价值的是最坏情况下的时间复杂性定义复杂性。教材中没有特殊说明时,T(n)一般指的就是最坏情况下的时间复杂性定义。
12.f(n)=O(g(n))表示
当且仅当存在正的常数C和N0,使得对于所有的n >=N0,有f(n) <=cg(n) 。
13. 写出下列f(n)的渐进性态:
1) f(n)=C0,为常数:f(n)= O( 1 )。
2) f(n)= 3n+2:f(n)= O( n )。
3) f(n)= 6×2n +n :f(n)= O( 2n )。 4) f(n)= nlog n :f(n)= O( nlog n )。
二 分析算法复杂性
1. 已知不重复且已经按从小到大排好的m 个整数的数组A[L .m](为简单起见,设m =2k ,k 是一个确定的非负整数)。对于给定的整数c ,要求寻找一个下标i ,使得A[i]=c,若找不到,则返回一个0。算法如下:
procedure search( c) /*c 是整型数 */ { i ←0; j ←l;
while A[j] return i; } 分析最坏的情况下即在A 中找不到等于c 的分量情况下的时间复杂性函数。 答:如果C 不在A 中需要比较n 次,时间复杂性函数为 T(n)=n 2.冒泡排序算法的基本运算如下: for i ←1 to n-1 do for j ←1 to n-i do