C++ 数组循环的时间复杂度

Time complexity of c++ array loop

本文关键字:时间复杂度 循环 数组 C++      更新时间:2023-10-16

我有以下循环,但无法计算复杂性。我需要帮助

int A[n][n];
for(int i=0; i<n;i++) {
    for(int j=0;j<n;j++) {
        int x;
        cin >> x;
        A[i][j] = x;
    }
}
int sumLine = 0;
for(int k=0;k<n;k++) {
    sumLine += A[k][0];
}

我将不胜感激

您需要分析三个循环。 前两个是一组嵌套循环:每次内部 (j( 循环运行 n 次时,外部 (i( 循环运行一次。 因为外循环最终运行 n 次,所以整个集合将运行 n*n = n^2 次,所以我们说这组循环在 O(n^2( 时间内运行。 一旦这些循环完成,第三个 (k( 循环运行 n 次,即 O(n( 时间。

当您有两个具有不同 big-O 复杂性的独立操作,并且想要将复杂性相加以获得它们的总数时,您可以采用两者中较大的一个。 由于 O(n^2( 比 O(n( "大",我们说整个程序在 O(n^2( 时间内运行。

时间复杂度将为 O(n^2(。在此处阅读有关时间复杂度的更多信息 - 如何查找算法的时间复杂度。这里有一些很好的解释。