好的,所以今天晚些時候我有一箇中期階段,我正在評估的項目之一是big-O。現在,我在當天完成了作業,並獲得了100%......但現在我找不到它,我不確定自己在做什麼。 Sooo有人可以給我一個解釋,說明我做錯了什麼,如果我做對了......也許你知道我爲什麼懷疑自己? 謝謝!大奧運計算(複習幫助)
此外,我記得之前我的作業是使用總結,我會從內到外工作。當我完成每一個總結時,我用一些「論壇」來計算最高的n,然後保留這個值並繼續下一個總和,等等等等,直到總和完成。
問題1.
sum = 0;
for (i = 0; i < n; i++)
sum++;
所以,因爲我忘了這整個求和方面,我的直覺告訴我,這是O(N),因爲最大的運行時間是N次...因爲它只是一個循環。
問題2.
sum = 0;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
sum++;
對於這一個,我「覺得」這是最高的運行時間爲O(N^2),因爲這兩個循環都依賴於N,並且它可以在N個最大化*如果循環爲N
問題3
sum = 0;
for (i = 0; i < n; i++)
for (j = 0; j < n * n; j++)
sum++;
這是我卡住...我覺得我確實需要用公式一起使用的總和,佈局增加起來。最內層循環可以在n * n處最大化,所以n^2。最重要的是,它可以在N處再次最大化循環...所以我猜測0(N^3)。
問題4.
sum = 0;
for (i = 0; i < n; i++)
for (j = 0; j < i; j++)
sum++;
同樣,我更失去了在這一個。內循環可以最大化我的時間...這是依賴於我,但是,這是依賴於N ....所以...我看到三個最大化的變量,我真的不確定如何比較它們以找到最大化運行。 (我真的需要記住總結設置和公式)。
對於下一個問題同樣如此,不知道從哪裏開始,我寧願不去嘗試,因爲我不想在我腦海中錯誤地思考。一旦我再次看到該公式,它會立即點擊,因爲我之前得到了它......我只是以某種方式失去了它。 任何幫助表示讚賞!
問題5:
sum = 0;
for (i = 0; i < n; i++)
for (j = 0; j < i * i; j++)
for (k = 0; k < j; k++)
sum++;
問題6:
sum = 0;
for (i = 1; i < n; i++)
for (j = 1; j < i * i; j++)
if (j % i == 0)
for (k = 0; k < j; k++)
sum++;