第一次算法设计与分析作业

本文探讨了算法效率分析,包括最佳、平均和最坏情况下的计算,涉及乘法、比较和位数计算等操作的复杂度。同时讲解了大O、Ω和Θ记号在描述函数增长速度中的应用,并给出了一系列具体函数的复杂度比较。此外,还讨论了求和问题和序列计算的复杂度,如平方和的计算。
摘要由CSDN通过智能技术生成

2.1.1

  1. (i) n n n; (ii)两个数相加; (iii)没有;
  2. (i) n n n的大小,也就是二进制的位数(ii) 两个整数的乘法;(iii) 没有
  3. (i) n n n (ii) 两个数字的比较 (iii) 没有
  4. (i) 两个输入数中较大的一个的大小,或者两个输入数中较小的一个的大小 (ii) 模除 (iii) 是
  5. (i) n n n的大小,也就是二进制的位数(ii) 从剩余的候选数列表中排除一个数是素数 (iii)不是
  6. (i) n n n (ii) 两位数的乘法 (iii)没有

2.1.4

  1. 最佳情况下的数字是2,最坏是12
  2. 这仅有两个可能的结果,丢失的袜子是一对,或者是丢失的袜子不是一对(最坏的情况)。总共有 ( 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. 455=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} 491+398=391对匹配.

2.1.9

  1. n ( n + 1 ) ≈ n 2 和 2000 n 2 n(n+1)\approx n^{2}和2000n^{2} n(n+1)n22000n2有相同的增长速度
  2. 100 n 2 100n^{2} 100n2 0.01 n 3 0.01n^{3} 0.01n3增长的慢
  3. log ⁡ a n 和 ln ⁡ n \log_{a}{n}和\ln{n} loganlnn有相同的增长速度
  4. log ⁡ 2 n ⋅ log ⁡ 2 n \log_{2}{n}\cdot\log_{2}{n} log2nlog2n 的增长速度大于 2 log ⁡ 2 n 2\log_{2}{n} 2log2n 的增长速度
  5. 2 n − 1 = 1 2 2 n 2^{n-1} =\frac{1}{2}2^n 2n1=212n有相同的增长速度和 2 n 2^n 2n
  6. ( n − 1 ) ! (n-1)! (n1)! n ! n! n!的增长速度慢,因为 n ! = ( n − 1 ) ! n n!=(n-1)!n n!=(n1)!n

2.2.3

  1. ( n 2 + 1 ) 10 ∈ θ ( n 20 ) (n^2+1)^{10}\in\theta(n^{20}) (n2+1)10θ(n20)
  2. 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)
  3. 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)
  4. 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+3n1=2n2+3n31θ(2n)+θ(3n)=θ(3n)
  5. ⌊ log ⁡ 2 n ⌋ ≈ log ⁡ 2 n ∈ θ ( log ⁡ 2 n ) \lfloor \log_2n \rfloor\approx\log_2n\in\theta(\log_2n) log2nlog2nθ(log2n)

2.2.4

  1. 增长的顺序和相关的符号 O , Ω , Θ \Omicron,\Omega,\Theta O,Ω,Θ处理的是函数的渐进行为,因为去到无穷大。因此,的有限范围内的函数的具体数值,尽管它们可能是暗示性的,但可以在数学上确定其增长的顺序.
  2. 后者都是前者的高阶

2.2.5

  1. 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,(n2)!

2.3.4

  1. 计算 S ( n ) = ∑ i = 1 n i 2 S(n)=\sum\limits_{i=1}^{n}i^2 S(n)=i=1ni2
  2. 乘法
  3. n n n
  4. Θ ( 2 b ) \Theta(2^b) Θ(2b)
  5. 使用公式 ∑ 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=1ni2=6n(n+1)(2n+1)即可在 Θ ( 1 ) \Theta(1) Θ(1)的时间内算出来

2.3.10

  1. 1000

2.4.4

  1. 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(n1)+2n1=(n1)2+2n1=n2
  2. C ( n ) = n − 1 C(n)=n-1 C(n)=n1
  3. C ( n ) = 3 ( n − 1 ) C(n)=3(n-1) C(n)=3(n1)

2.4.9

  1. 该算法计算一个给定的数组中最小的元素的值。
  2. C ( n ) = n − 1 C(n)=n-1 C(n)=n1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值