确定给定代码段的最坏情况下的时间复杂度

时间:2012-09-27 21:55:41

标签: complexity-theory

确定最坏情况下的时间复杂度。 (显示计算)

  int i = 1;
  int j = 4;
  while (i<(n*n)&& j<(n*n*n*n)){
    if (i%3 == 0) i+=3; 
    else i+=4;

    if (j%2 == 0) j*=4;
    else j*=2;          
 }

1 个答案:

答案 0 :(得分:1)

在最坏的情况下,这将以最快的方式运行,最快达到n ^ 2或j达到n ^ 4。变量i线性增加,j每次迭代指数增加。 j正在成为每次迭代4次的不同力量。

在n ^ 2/3次迭代后,我将达到n ^ 2,即O(n ^ 2)。 在log_4 n ^ 4次迭代之后,j将达到n ^ 4(其中log_4是log base 4)。

所以问题是哪个更大n ^ 2或log(n ^ 4),答案是响亮的n ^ 2.

因此该算法为O(n ^ 2)