05 2013 档案
摘要:6.1-1元素最少的情况是最底层只有一个叶子,即$2^h$;元素最多的情况是整棵树是满的,即$2^{h+1}-1$。(这里按照叶子到根的最大边数来定义高度)6.1-2设高度为h,那么可知$$2^h \le n \le 2^{h+1}-1$$$$\Rightarrow h \le \lg n \lt ...
阅读全文
摘要:5.1-1如果我们能够比较任意两个应聘者的优劣,那么我们就能够对所有的应聘者按照优劣进行排序,之后按顺序对每个人赋予rank值,这样我们就知道了原来应聘者rank值的序列。5.1-2要利用Random(0, 1)实现Random(a, b),我们可以把问题转化为实现a+Random(0, b-a)。之后可以利用Random(0, 1)来生成二进制下随机数的每一位。由于数的范围是$[0, b-a]$,所以位数的范围是$[1, 1 + \lfloor \lg {(b-a)} \rfloor]$。如果生成的数大于b-a,就将其舍去重新生成,直到产生符合要求的数为止。Random(a, b) n =
阅读全文
摘要:4.5-1
a) $$a=2,b=4,f(n)=\Theta(1),\log_b a = \frac 12 \gt 0 $$
符合情况1,$ T(n) = \Theta (n^{1/2})$ b) $$a=2,b=4,f(n)=\Theta(n^{1/2}),\log_b a = \frac 12 $$
符合情况2,$ T(n) = \Theta (n^{1/2}\lg n)$...
阅读全文
摘要:4.1-1返回只包含绝对值最小的元素的子数组。4.1-2Maximun-Subarray(A) max = -infinity for i = 1 to A.length sum = 0 for j = i to A.length sum = sum + A[i] if sum > max max = sum low = i high = j return (low, high, max)每次内循环都利用上次累加的结果,避免重复运算。外层循环执行n次,第i次外循环内层循环执行n-i+1次,所以总的时间复杂度为$\Theta (n^2)$。4.1-3这道题$n_0$...
阅读全文
摘要:3.1-1
分情况讨论
当$f(n) \ge g(n)$时,$max(f(n), g(n))=f(n)$,存在$c_1=\frac 12,c_2=1,n_0>0$使得
$$0 < c_1(f(n)+g(n)) \le f(n) \le c_2(f(n)+g(n)) 对于所有n \ge n_0$$
同理可证当$g(n) > f(n)$的情况 3.1-2
$(n+a)^b = n^b + ...
阅读全文
摘要:2.1-1
初始 31 41 59 26 41 58
第一遍 31 41 59 26 41 58
第二遍 31 41 59 26 41 58
第三遍 26 31 41 59 41 58
第四遍 26 31 41 41 59 58
第五遍 26 31 41 41 58 59 2.1-2
把顺序改成非递增只要把判断大小时的条件改成小于即可 Insertion-Sort(A)
for ...
阅读全文
摘要:最近开始看算法导论了,但是发现官方给的参考答案只涵盖了一部分的习题,所以把自己做的答案分享一下,如有错误之处尽管指出,希望通过这个过程能与大家共同进步
我看的版本是英文第三版 (Introduction to Algorithms, Third Edition),所有的题目分为每一节后的练习(Exercises)和每一章后的问题(Problems),所有的题目编号都按照书上的编号来。比如1...
阅读全文