請有人可以幫助我在如何計算操作數(嵌套循環)像這樣的: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