使用Big-Oh进行while(key< = N * N)循环的复杂性分析

时间:2018-03-11 13:08:18

标签: algorithm time-complexity big-o complexity-theory asymptotic-complexity

我很难为这个while循环结束Big-O表示法,其中N是输入大小:

 int array[0][(N-1)/2] = 1;
 int key = 2,k,l;
 i = 0;
 int j = (N-1)/2;
 while(key <= N*N)
  {
   if(i <= 0)
    k = N-1;
   else
    k = i-1;
   if(j <= 0)
    l = N-1;
   else
    l = j-1;
  if(array[k][l])
    i = (i+1)%N;
  else
    {
      i = k;
      j = l;
     }
  array[i][j] = key;
  key++;
   }
I concluded it as O(N2) 

因为当N = 5时,它迭代直到N * N,即5 * 5 = 25次,但我仍然对循环内的其余代码感到困惑。如果有人可以逐步解释代码,我会非常感激。这个循环只是一个更大的函数的一部分,它有4个循环,我理解但不是这个循环。

1 个答案:

答案 0 :(得分:1)

你应该关心的是, k 如何变化。它在每次迭代中增加一个,这里没有捷径。

所以它只是O(N 2 )。