2012-10-26 49 views
-3

请有人可以帮助我在如何计算操作数(嵌套循环)像这样的:For Loop算法(操作次数)?

for(int c=0; c<10; c++){ 
    for(int j=0; j<n; j++) 
     for(int r=0; r<n; r++) 
      cout<<j; 
     cout<<endl; 
     } 
+0

N * N * 10。这点在哪里? – SinisterMJ

+0

是面试问题吗?可能有人在明显的内部没有括号的情况下玩弄聪明,所以endl只会被打印n * 10次。你仍然必须定义你的意思是什么操作等 –

+0

@izomorphius确实,增加计数器算作一个操作? – Bernhard

回答

1

这将是(大致成正比)10n2

不完全取决于您如何定义操作。例如,换行符的输出仅发生10次。

因此,如果您的操作是cout声明,它将是10n2 + 10

1

n * n * 10 + 10,如果std::cout << jstd::cout << endl;都算作单独的操作。

1

正确的缩进应该是:

for(int c=0; c<10; c++) { 
    for(int j=0; j<n; j++) 
     for(int r=0; r<n; r++) 
      cout<<j; 
    cout<<endl; 
} 

添加缺少括号你:

for(int c=0; c<10; c++) { 
    for(int j=0; j<n; j++) { 
     for(int r=0; r<n; r++) { 
      cout<<j; 
     } 
    } 
    cout<<endl; 
} 

现在你可以清楚地看到它多少次打印:

(10 * n * n) + (10) 
+0

我想你所做的只是确定这个代码的大(O)是O(n^2)。 关于C++,j ++和r ++呢? 另外,c = 0,j = 0和r = 0这些语句中的每一个我们都可以认为它是一个操作,所以在循环中我如何评估每个迭代的次数? – user1735329

+0

@ user1735329您需要先为其定义**操作**,但它与架构高度相关。 'r ++'可能对应于一台机器中的一个机器级指令,另一个机器中的三条指令。通常不需要,为什么你需要它? – none