算法设计技巧与分析
参考答案
第1章 算法分析基本概念
1.1
(a)6 (b)5 (c)6 (d)6 1.4
算法执行了7+6+5+4+3+2+1=28次比较
45 33 24 45 12 12 24 12 12 33 24 45 45 12 24 12 12 12 24 45 45 33 24 12 12 12 12 45 45 33 24 24 12 12 12 24 45 33 45 24 12 12 12 24 24 33 45 45 12 12 12 24 24 33 45 45 12 12 12 24 24 33 45 45
1.5
(a)算法MODSELECTIONSORT执行的元素赋值的最少次数是0,元素已按非降序排列的时候达到最小值。
(b) 算法MODSELECTIONSORT执行的元素赋值的最
精品资料
______________________________________________________________________________________________________________
多次数是3n(n1),元素已按非升序排列的时候达到最小值。
21.7
4 3 12 5 6 7 2 9 1次 3 4 1次 3 4 12 2次 3 4 5 12 2次 3 4 5 6 12 2次 3 4 5 6 7 12 6次 2 3 4 5 6 7 12 2次 2 3 4 5 6 7 9 12 由上图可以看到执行的比较次数为1+1+2+2+2+6+2=16次。 1.11
比较9次 2 4 5 7 8 11 12 13 15 17 19 比较为6次 2 4 5 8 11 13 17 19 7 12 15 比较为3次, 2次,1次 2 5 17 19 4 8 11 13 7 12 15 比较均为1次,共5次 2 2 17 5 19 11 13 4 8 12 15 7 17 19 5 13 11 4 8 15 12 7 精品资料
______________________________________________________________________________________________________________
由上图可以得出比较次数为5+6+6+9=26次。 1.13
FTF,TTT,FTF,TFF,FTF 1.16
(a) 执行该算法,元素比较的最少次数是n-1。元素已按非降序排列时候达到最小值。
(b) 执行该算法,元素比较的最多次数是n(n1)。元素已
2按非升序排列时候达到最大值。
(c) 执行该算法,元素赋值的最少次数是0。元素已按非降序排列时候达到最小值。
(d) 执行该算法,元素赋值的最多次数是3n(n1)。元素已
2按非升序排列时候达到最大值。
(e)n用O符号和符号表示算法BUBBLESORT的运行时间:tO(n2),t(n)
(f)不可以用符号来表示算法的运行时间:是用来表示算法的精确阶的,而本算法运行时间由线性到平方排列,因此不能用这一符号表示。 1.27
不能用关系来比较n2和100n2增长的阶。
n210 ∵limn100n2100精品资料
______________________________________________________________________________________________________________
n2不是o(100n2)的,即不能用关系来比较n2和100n2增长
的阶。 1.32
(a)当n为2的幂时,第六步执行的最大次数是:
n2k,j2k1时,
k[logn]nlogn
i1i1nn(b)由(a)可以得到:当每一次循环j都为2的幂时,第六步执行的次数最大,
3k3km则当n3,j2(其中
22k取整)时,
m[log(3ii1i1nnk1)]nlog(n1)
(c)用符号表示的算法的时间复杂性是O(nlogn) 已证明n=2k的情况,下面证明n=2k+1的情况:
2k2k1因为有
22所以n=2k+1时,第六步执行的最大次数仍是n log n。 (d) 用符号表示的算法的时间复杂性是(n)。
当n满足jn/2取整为奇数时,算法执行的次数是n次,其他情况算法执行次数均大于n。
(e) O更适合表示算法的时间复杂性。因为本算法时间复杂性从(n)到O(nlogn),而是表示精确阶的。 1.38
精品资料
______________________________________________________________________________________________________________
对n个数进行排序。
第5章 归纳法
5.3(本题不仅有以下一个答案)
1.max(n) 过程:max(i)
if n=1 return a[1] t=max(i-1)
if a[i-1]>t return a[i-1] else return t end if
5.6 最多次数:
0,n1 C(n)c(n1)(n1),n2C(n)jj1nn(n1) 2最少次数:
精品资料
______________________________________________________________________________________________________________
0,n1 C(n)C(n1)1,n2C(n)=n-1 5.7
参考例5.1 5.14
(a)不稳定,例如:
12 45 45 24 12 45 45 24 12 24 45 45 12 24 45 45
可见SELECTIONSORT中相等元素的序在排序后改变。 (b)(c)(d)(f)稳定 5.17
(a)利用Pn(x)xPn1(x)a0 取x3,
P5(3)P4(3)P3(3)P2(3)P1(3)P0(3)
P2(3)3*P1(3)437P1(3)3*P0(3)211P0(3)3
P3(3)3*P2(3)1112P4(3)3*P3(3)2338P5(3)3*P4(3)510195.18
(a) p(2,5)p(2,2)p(2,1)p(2,0)
精品资料
______________________________________________________________________________________________________________
y42*2y224y12*2y1
第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