2012-10-26 98 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