2D阵列初始化时程序的时间复杂度?

时间:2015-02-06 07:43:54

标签: c++

#include <iostream>
using namespace std;
int main()
{
    int a[100][100]={10};
    cout<<a[0][0];
    return 0;
}

上述程序的时间复杂度是多少? 是O(1)还是O(100 ^ 2)??

3 个答案:

答案 0 :(得分:2)

  • 初始化数组为O(N)
  • O(k) == O(1)(对于常数kk > 0)。

由于您的数组具有固定大小,因此程序的复杂性为O(1)

如果您将程序更改为:

#include <iostream>
#include <vector>
int main()
{
    int size;
    std::cin >> size;
    std::vector<int> a(size);
    // ..
}

在那里,a的初始化为O(N)

答案 1 :(得分:1)

代码中的所有值都是常量,因此其执行时间是常量:O(1)。

(当然实际时间取决于您选择运行程序的机器以及不可预测的外部条件,例如执行时的整体系统负载。)

答案 2 :(得分:0)

时间复杂度是不变的,因为考虑使用malloc(sizeof(int)*rows*cols)分配空间,之前已经定义了rowscols

此外,数组索引以恒定时间发生。因此,总的来说它是不变的。