我已經有兩段代碼和他們所屬的大O類別的解釋。然而,儘可能地嘗試一下,我無法通過觀察它或者進行樣品運行來得出解釋。兩個代碼片段的大O符號
第一:
long count = 0;
long n = 1000;
long i, j, k;
for(i = 0; i < n; i++)
for (j = 0; j < i * i; j++)
for (k = 0; k < j; k++)
count++;
樣品的這種運行始終給我ñ^ 4,但是我已經給出的答案是「J的特徵可以大到我^ 2,這可能是因爲大作爲N^2,k可以與j一樣大,即N^2,因此運行時間與N^N^2^N^2成正比,即爲O(N^5)「
第二代碼片段:
long i, j, k;
long n = 1000;
long count = 0;
for (i = 1; i < n; i++)
for (j = 1; j < i * i; j++)
if (j % i == 0)
for (k = 0; k < j; k++)
count++;
爲此,筆記說「if語句執行d最多N3次,但以前的論點是正確的,但只有O(N^2)次(因爲每次我都是正確的)。因此最內層的循環只執行O(N^2)次。每次通過時,需要O(j^2)= O(N^2)時間,總共O(N^4)「
爲此,筆記似乎對N^4 (雖然我一直得到N^4/10的結果),但我並沒有按照模擬計算的方式,只是對每個我都是真實的,但是,似乎進入這個循環的時間要少很多
所以問題是任何人都可以澄清什麼,我不理解
「我不斷得到'N^4/10'的結果 - 大-O忽略乘法常量。你是否理解第一個,或者你也需要解釋? – meowgoesthedog