算法设计技巧与分析答案.docx
《算法设计技巧与分析答案.docx》由会员分享,可在线阅读,更多相关《算法设计技巧与分析答案.docx(15页珍藏版)》请在冰豆网上搜索。
算法设计技巧与分析答案
算法设计技巧与分析
参考答案
第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执行的元素赋值的最多次数是,元素已按非升序排列的时候达到最小值。
1.7
由上图可以看到执行的比较次数为1+1+2+2+2+6+2=16次。
1.11
由上图可以得出比较次数为5+6+6+9=26次。
1.13
FTF,TTT,FTF,TFF,FTF
1.16
(a)执行该算法,元素比较的最少次数是n-1。
元素已按非降序排列时候达到最小值。
(b)执行该算法,元素比较的最多次数是。
元素已按非升序排列时候达到最大值。
(c)执行该算法,元素赋值的最少次数是0。
元素已按非降序排列时候达到最小值。
(d)执行该算法,元素赋值的最多次数是。
元素已按非升序排列时候达到最大值。
(e)用O符号和符号表示算法BUBBLESORT的运行时间:
,
(f)不可以用符号来表示算法的运行时间:
是用来表示算法的精确阶的,而本算法运行时间由线性到平方排列,因此不能用这一符号表示。
1.27
不能用关系来比较和增长的阶。
∵
不是的,即不能用关系来比较和增长的阶。
1.32
(a)当n为2的幂时,第六步执行的最大次数是:
时,
(b)由(a)可以得到:
当每一次循环j都为2的幂时,第六步执行的次数最大,
则当(其中取整)时,
(c)用符号表示的算法的时间复杂性是
已证明n=2k的情况,下面证明n=2k+1的情况:
因为有
所以n=2k+1时,第六步执行的最大次数仍是nlogn。
(d)用符号表示的算法的时间复杂性是。
当满足取整为奇数时,算法执行的次数是次,其他情况算法执行次数均大于。
(e)O更适合表示算法的时间复杂性。
因为本算法时间复杂性从到,而是表示精确阶的。
1.38
对个数进行排序。
第5章归纳法
5.3(本题不仅有以下一个答案)
1.max(n)
过程:
max(i)
ifn=1returna[1]
t=max(i-1)
ifa[i-1]>treturna[i-1]
elsereturnt
endif
5.6
最多次数:
最少次数:
C(n)=n-1
5.7
参考例5.1
5.14
(a)不稳定,例如:
可见SELECTIONSORT中相等元素的序在排序后改变。
(b)(c)(d)(f)稳定
5.17
(a)利用
取,
5.18
(a)
第6章分治
6.3
输入:
A[1,2,…n]
输出:
max,min
1.fori=1tomid
2.j=high-i
3.ifa[i]>a[j],thenexchangea[i],a[j]
4.endfor
5.fori=lowtomid
6.ifa[i+1]7.endfor
8.fori=mid+1tohigh
9.ifa[i+1]>a[high],thenexchangea[high],a[i+1]
10.endfor
6.5
输入:
一个整数数组A[1,2,…,n]
输出:
sum
1.ifhigh-low=1then
2.sum=a[low]+a[high]
3.else
4.mid=(low+high)/2
5sum1=sum(low,mid)
6sum2=sum(mid+1,high)
7.sum=sum1+sum2
8.endif
9.returnsum
算法需要的工作空间为3
6.10.
6.31
彩色代表i,j所指的数字j总在i前
6.36
6.42
Quicksort不是稳定的。
6.43
bcefg均为适应的,a、h不是适应的。
第7章动态规划
7.1
(c),算法BOTTOMUPSORT
7.5
字符串A=”xzyzzyx”和B=”zxyyzxz”的最长公共子序列长度为4,共有6个最长公共子序列,分别是:
①zyyx②zyzz③zyzx④xyyx⑤xyzz⑥xyzx
7.9
C[1,5]=C[1,1]+C[2,5]+r[1]*r[2]*r[6]=307
C[1,5]=C[1,2]+C[3,5]+r[1]*r[3]*r[6]=252
C[1,5]=C[1,3]+C[4,5]+r[1]*r[4]*r[6]=372
C[1,5]=C[1,4]+C[5,5]+r[1]*r[5]*r[6]=260
所以最优括号表达式为(M1M2)((M3M4)M5)
7.15
7.21
0
1
2
3
4
5
6
7
8
9
10
11
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
3
3
3
3
3
3
3
3
3
3
2
0
0
3
4
4
7
7
7
7
7
7
7
3
0
0
3
4
4
7
7
8
9
9
12
12
4
0
0
3
4
4
7
7
8
10
11
12
14
7.23
当物品体积为负值时,运行算法会发生溢出错误。
第八章贪心算法
8.12
由算法从s到t要选择先到a然后到t,其结果为4,而从s到t距离为2,所以探索不总是产生从s到t的距离
8.13
8.23(共有4棵最小生成树,此处仅举一例)
8.24(共有4棵最小生成树,此处仅举一例)
8.31
每一个二叉树都取左边为0,右边为1
则最优编码为a:
10b:
001c:
0001
d:
0000e:
01f:
11
注意:
编码不唯一
回溯法