请有人可以帮助我在如何计算操作数(嵌套循环)像这样的: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;
}
请有人可以帮助我在如何计算操作数(嵌套循环)像这样的: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;
}
迭代次数是
10 * n * n
这将是(大致成正比)10n2
。
不完全取决于您如何定义操作。例如,换行符的输出仅发生10
次。
因此,如果您的操作是cout
声明,它将是10n2 + 10
。
n * n * 10 + 10,如果std::cout << j
和std::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;
}
添加缺少括号你:
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)
我想你所做的只是确定这个代码的大(O)是O(n^2)。 关于C++,j ++和r ++呢? 另外,c = 0,j = 0和r = 0这些语句中的每一个我们都可以认为它是一个操作,所以在循环中我如何评估每个迭代的次数? – user1735329
@ user1735329您需要先为其定义**操作**,但它与架构高度相关。 'r ++'可能对应于一台机器中的一个机器级指令,另一个机器中的三条指令。通常不需要,为什么你需要它? – none
N * N * 10。这点在哪里? – SinisterMJ
是面试问题吗?可能有人在明显的内部没有括号的情况下玩弄聪明,所以endl只会被打印n * 10次。你仍然必须定义你的意思是什么操作等 –
@izomorphius确实,增加计数器算作一个操作? – Bernhard