演算法分析__迴圈操作的複雜度

Enjoy_process發表於2019-03-05

                                          演算法分析__迴圈操作的複雜度

 

 

 


for(int i=0;i<n;i++)
  for(int j=0;j<n;j++)
    操作;

算術級數:

\sum_{i=0}^{n-1}n=n+n+n...+n=n*n=O(n^{2})

 

 


for(int i=0;i<n;i++)
  for(int j=0;j<i;j++)
    操作;

算術級數:

\sum_{i=0}^{n-1}i=0+1+2+...+(n-1)=\frac{n(n-1)}{2}=O(n^{2})

 

 


for(int i=0;i<n;i++)
  for(int j=0;j<i;j+=2019)
    操作;

算術級數:

\sum_{i=0}^{n-1}\frac{i}{2019}=\frac{1}{2019}(0+1+2+...+(n-1)=\frac{1}{2019}\frac{n(n-1)}{2}=O(n^{2})

 

 


for(int i=1;i<n;i<<=1)
  for(int j=0;j<i;j++)
    操作;

幾何級數:

1+2+4+...+2^\left{ \lfloor log_{2}(n-1) \right \rfloor}=O(2^\left{ \lfloor log_{2}(n-1) \right \rfloor})=O(n)

 

 

相關文章