为什么以下函数的时间复杂度为O(n)?我无法理解我的生活。
void setUpperTriangular (
int intMatrix[0,…,n-1][0,…,n-1]) {
for (int i=1; i<n; i++) {
for (int j=0; j<i; j++) {
intMatrix[i][j] = 0;
}
}
}
}
我将最终时间复杂度保持为O(n ^ 2),因为:
i: execute n times{//Time complexity=n*(n*1)
j: execute n times{ //Time complexity=n*1
intMatrix[i][j] = 0; //Time complexity=1
}
}
答案 0 :(得分:8)
代码遍历数组中的n^2/2
(半个矩阵)位置,因此它的时间复杂度为O(n^2)
答案 1 :(得分:1)
这与循环的插入排序相同。插入排序的时间复杂度为O(n2)。
答案 2 :(得分:0)
因此,CS部门主管以不同的方式解释了它。他说,由于第二个循环不会迭代n次,它会迭代n!倍。从技术上讲,它是O(n)。
答案 3 :(得分:0)
它最多可以被认为是O(n.m),最终归结为O(n.n)或O(n ^ 2)..