算法设计技巧与分析答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
算法设计技巧与分析
参考答案
第1章算法分析基本概念
1.1
(a) 6 (b)5 (c)6 (d)6
1.4
算法执行了7+6+5+4+3+2+1=28次比较
1.5
(a) 算法MODSELECTIONSORT执行的元素赋值的最少
次数是0,元素已按非降序排列的时候达到最小值。
(b) 算法MODSELECTIONSORT执行的元素赋值的最多
次数是3n(F),元素已按非升序排列的时候达到最小值。
1.7
1次
由上图可以看到执行的比较次数为1+1+2+2+2+6+2=16次1.1
1
由上图可以得出比较次数为5+6+6+9=26次
1.13
FTF,TTT,FTF,TFF,FTF 1.16
⑻ 执行该算法,元素比较的最少次数是 n-1。元素已按非 降
序排列时候达到最小值。
(b)执行该算法,元素比较的最多次数是 吨严。元素已
按非升序排列时候达到最大值。 (c) 执行该算法,元素赋值的最少次数是 0。元素已按非
降序排列时候达到最小值。
(d) 执行该算法,元素赋值的最多次数是 空严。元素已
按非升序排列时候达到最大值。
(e) n 用o 符号和「符号表示算法 BUBBLESORT 的运行时 间:t =O(n 2), t"(n)
(f) 不可以用0符号来表示算法的运行时间:
0是用来表示
算法的精确阶的,而本算法运行时间由线性到平方排列, 因此不能用这一符号表示。 1.27
不能用「关系来比较n 2和100n 2增长的阶
2 .. n lim 2
n ::
100n 2
n 2不是
o(100n 2)的,即不能用•关系来比较n 2和100n 2增长 的阶。
1.32
1 100
=0
(a) 当n 为2的幕时,第六步执行的最大次数是:
^2k , j =2kJ 时,
n
n
、k _、[log n ]二 n log n
i 4
i 4
(b) 由⑻可以得到:当每一次循环j 都为2的幕时,第六步 执行的次数最大,
n n m — [log(3k -1)H nlog( n-1)
i 4
i 4
(c)用0符号表示的算法的时间复杂性是 O(nlog n) 已证明n=2k
的
情况,下面证明 n=2k
+1的情况:
所以n=2k
n log n 。
(d)用门符号表示的算法的时间复杂性是 门(n)。
当n 满足j =n/2取整为奇数时,算法执行的次数是 n 次,其
他情况算法执行次数均大于
n
(e) O 更适合表示算法的时间复杂性。因为本算法时间复 杂性从门(n)到O(nlog n),而心是表示精确阶的。 1.38
对n 个数进行排序。
因为有则当
3k
=2m
k
(其中占取整)时,
第5章归纳法5.3 (本题不仅有以下一个答案)
1. max( n)
过程:max(i)
if n=1 retur n a[1]
t=max(i-1)
if a[i-1]>t return a[i-1]
else retur n t
end if
5.6
最多次数:
C(n) = 0,n
[c(n —1) + (n— 1),n
n
C(n)八j
j
1
最少次数:
C( n)二n-1 5.7n(n 1) 2
C(n)
0,n =1
C(n _ 1)+1,n M2
参考例5.1
5.14
(a)不稳定,例如:
可见SELECTIONSORT中相等元素的序在排序后改变。
(b)(c)(d)(f)稳定
5.17
(a)利用R(x)二xP n」(x) a o
取x =3,
P5(3) > 巳(3) > 巳(3) > 巳(3) > R(3) > P°(3)
P2(3) =3* R(3) 4 P(3) =3* P°(3) 2 =11 P°(3) =3
:
P3(3) =3* F2(3) 1 =112 > F4(3) =3* P3(3) - 2 =338 > F5(3) =3* F4(3) 5=1019
5.18
(a) p(2,5)p (2,2p (2p1)
2 2 2 y=4 *2 :—y=2 =4:—y=1 *2 :—y=1
第6章分治
6.3
输入:A[1,2,…n]
输出:max,min
1. for i=1 to mid
2. j=high-i
3. if a[i]>a[j], then exchange a[i],a[j]
4. end for
5. for i=low to mid