2.1.1
- (i) n n n; (ii)两个数相加; (iii)没有;
- (i) n n n的大小,也就是二进制的位数(ii) 两个整数的乘法;(iii) 没有
- (i) n n n (ii) 两个数字的比较 (iii) 没有
- (i) 两个输入数中较大的一个的大小,或者两个输入数中较小的一个的大小 (ii) 模除 (iii) 是
- (i) n n n的大小,也就是二进制的位数(ii) 从剩余的候选数列表中排除一个数是素数 (iii)不是
- (i) n n n (ii) 两位数的乘法 (iii)没有
2.1.4
- 最佳情况下的数字是2,最坏是12
- 这仅有两个可能的结果,丢失的袜子是一对,或者是丢失的袜子不是一对(最坏的情况)。总共有 ( 10 2 ) = 45. \binom{10}{2} = 45. (210)=45.最好的情况下数量是5,因此其概率为 5 45 = 45. \frac{5}{45}=45. 455=45.最坏情况下的数量是 45 − 5 = 40. 45-5=40. 45−5=40.因此其概率为 40 45 = 8 9 . \frac{40}{45} = \frac{8}{9}. 4540=98.总的来说,期待有 4 ⋅ 1 9 + 3 ⋅ 8 9 = 3 1 9 4\cdot \frac{1}{9}+3\cdot\frac{8}{9} = 3\frac{1}{9} 4⋅91+3⋅98=391对匹配.
2.1.9
- n ( n + 1 ) ≈ n 2 和 2000 n 2 n(n+1)\approx n^{2}和2000n^{2} n(n+1)≈n2和2000n2有相同的增长速度
- 100 n 2 100n^{2} 100n2 比 0.01 n 3 0.01n^{3} 0.01n3增长的慢
- log a n 和 ln n \log_{a}{n}和\ln{n} logan和lnn有相同的增长速度
- log 2 n ⋅ log 2 n \log_{2}{n}\cdot\log_{2}{n} log2n⋅log2n 的增长速度大于 2 log 2 n 2\log_{2}{n} 2log2n 的增长速度
- 2 n − 1 = 1 2 2 n 2^{n-1} =\frac{1}{2}2^n 2n−1=212n有相同的增长速度和 2 n 2^n 2n
- ( n − 1 ) ! (n-1)! (n−1)!比 n ! n! n!的增长速度慢,因为 n ! = ( n − 1 ) ! n n!=(n-1)!n n!=(n−1)!n
2.2.3
- ( n 2 + 1 ) 10 ∈ θ ( n 20 ) (n^2+1)^{10}\in\theta(n^{20}) (n2+1)10∈θ(n20)
- 10 n 2 + 7 n + 3 ≈ 10 n 2 ≈ θ ( n ) \sqrt{10n^2+7n+3}\approx\sqrt{10n^2}\approx\theta(n) 10n2+7n+3≈10n2≈θ(n)
- 2 n lg ( n + 2 ) 2 + ( n + 2 ) 2 lg n 2 = θ ( n ) 2n\lg(n+2)^2+(n+2)^2\lg\frac{n}{2}=\theta(n) 2nlg(n+2)2+(n+2)2lg2n=θ(n)
- 2 n + 1 + 3 n − 1 = 2 n ⋅ 2 + 3 n ⋅ 1 3 ∈ θ ( 2 n ) + θ ( 3 n ) = θ ( 3 n ) 2^{n+1}+3^{n-1} = 2^n\cdot2+3^n\cdot\frac{1}{3}\in\theta(2^n)+\theta(3^n)=\theta(3^n) 2n+1+3n−1=2n⋅2+3n⋅31∈θ(2n)+θ(3n)=θ(3n)
- ⌊ log 2 n ⌋ ≈ log 2 n ∈ θ ( log 2 n ) \lfloor \log_2n \rfloor\approx\log_2n\in\theta(\log_2n) ⌊log2n⌋≈log2n∈θ(log2n)
2.2.4
- 增长的顺序和相关的符号 O , Ω , Θ \Omicron,\Omega,\Theta O,Ω,Θ处理的是函数的渐进行为,因为去到无穷大。因此,的有限范围内的函数的具体数值,尽管它们可能是暗示性的,但可以在数学上确定其增长的顺序.
- 后者都是前者的高阶
2.2.5
- 5 lg ( n + 100 ) 10 , ln n 2 , n 3 , 0.001 n 4 + 3 n 3 + 1 , 3 n , 2 2 n , ( n − 2 ) ! 5\lg({n+100})^{10},\ln_{n}^{2},\sqrt[3]{n},0.001n^4+3n^3+1,3^n,2^{2n},(n-2)! 5lg(n+100)10,lnn2,3n,0.001n4+3n3+1,3n,22n,(n−2)!
2.3.4
- 计算 S ( n ) = ∑ i = 1 n i 2 S(n)=\sum\limits_{i=1}^{n}i^2 S(n)=i=1∑ni2
- 乘法
- n n n
- Θ ( 2 b ) \Theta(2^b) Θ(2b)
- 使用公式 ∑ i = 1 n i 2 = n ( n + 1 ) ( 2 n + 1 ) 6 \sum\limits_{i=1}^{n}i^2=\frac{n(n+1)(2n+1)}{6} i=1∑ni2=6n(n+1)(2n+1)即可在 Θ ( 1 ) \Theta(1) Θ(1)的时间内算出来
2.3.10
- 1000
2.4.4
- C ( n − 1 ) + 2 n − 1 = ( n − 1 ) 2 + 2 n − 1 = n 2 C(n-1)+2n-1=(n-1)^2+2n-1=n^2 C(n−1)+2n−1=(n−1)2+2n−1=n2
- C ( n ) = n − 1 C(n)=n-1 C(n)=n−1
- C ( n ) = 3 ( n − 1 ) C(n)=3(n-1) C(n)=3(n−1)
2.4.9
- 该算法计算一个给定的数组中最小的元素的值。
- C ( n ) = n − 1 C(n)=n-1 C(n)=n−1