我有一個任務,我不確定;我要計算下面的代碼的時間複雜度:用大O計算時間複雜度
int a[][] = new int[m][n]; //O(1)
int w = 0; //O(1)
for (int i = 0; i < m; i++) //O(n)
for (int j = 0; j <n; j++) //O(n)
if (a[i] [j] % 2 == 0) //O(logn)
w++; //O(1)
從我Ø估計
所以我把它們加起來:
O(1)+ O(1)+ O(N)*(O (n)*(O(logn)+ O(1)/ 2)
O(1)+ O(1)+ O(n)*(O(nlogn)+ O(n)/ 2)
O(1)+ O(1)+(O(N 2 logn)時間+ O(N 2 )/ 2)
= O(N 2 logn)時間
我不確定我的思路是否正確,有人可以幫忙嗎?
該日誌是錯誤的。完整的複雜性只是二次的。 (假設模數不變,if就是一個常量運算) – sascha
@sascha它不是二次的。 – xenteros
@sascha哦,我明白了......我在筆記裏的某個地方講過我的講師,因爲變量有可能是%2,並且出於某種原因它是o(logn)。由於 – RVER12321312