0
点赞
收藏
分享

微信扫一扫

【算法时间复杂度分析】

左小米z 2022-02-26 阅读 37
算法

文章目录

for(i=1;i<=n;i++)   //n+1
   for(j=1;j<=i;j++)   //
      for(k=1;k<=j;k++)
         x=x+1;

语句频度:
∑ i = 1 n ∑ j = 1 i ∑ k = 1 j 1 = ∑ i = 1 n ∑ j = 1 i j = ∑ i = 1 n i ( i + 1 ) 2 \sum_{i=1}^{n}\sum_{j=1}^{i} \sum_{k=1}^{j}1 =\sum_{i=1}^{n}\sum_{j=1}^{i}j=\sum_{i=1}^{n} \frac{i(i+1)}{2} i=1nj=1ik=1j1=i=1nj=1ij=i=1n2i(i+1)
= 1 2 ( ∑ i = 1 n i 2 + ∑ i = 1 n i ) = 1 2 ( n ( n + 1 ) ( 2 n + 1 ) 6 + n ( n + 1 ) 2 ) = n ( n + 1 ) ( n + 2 ) 6 =\frac{1}{2} (\sum_{i=1}^{n}i^2+\sum_{i=1}^{n}i )=\frac{1}{2}(\frac{n(n+1)(2n+1)}{6}+\frac{n(n+1)}{2})=\frac{n(n+1)(n+2)}{6} =21i=1ni2+i=1ni=21(6n(n+1)(2n+1)+2n(n+1))=6n(n+1)(n+2)

i=1;
while(i<=n)
   i=i*2;

循环1次;i=12=2
循环2次:i=2
2=22
循环3次:i=222=23
……循环x次;i=2x
i<=n; 2x<=n; x < = log ⁡ 2 n x<=\log_{2}{n} x<=log2n
2 f ( n ) < = n 2^{f(n)}<=n 2f(n)<=n
f ( n ) < = log ⁡ 2 n f(n)<= \log_{2}{n} f(n)<=log2n
取最大值 f ( n ) < = log ⁡ 2 n f(n)<= \log_{2}{n} f(n)<=log2n

举报

相关推荐

0 条评论