为什么下面的函数的时间复杂度为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
    }
}

最佳答案

代码遍历数组中的n^2/2(半个正方形矩阵)位置,因此其时间复杂度为O(n^2)

关于complexity-theory - 为什么这个时间复杂度为O(n)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21388719/

10-12 21:17