我知道这是常数(13)
for(int I = 0; I < 13; I++){
do something
}
但是如果我改为这样做
int a = 13;
for(int I = 0; I < a; I++){
do something
}
(我用一个int值替换了13) 我认为它仍然是常量,因为int值是常量,而不是O(n)。
答案 0 :(得分:1)
如果您的do something
代码的时间复杂度为 O(1)(恒定),则您的代码的时间复杂度为 O(a)(线性复杂度)(如果未指定值a
)。如果已知 a 的值为13,则复杂度为 O(13) = O(1)。
如果do something
的复杂度为 g(n),则您的代码的复杂度为 O(ag(n))。
答案 1 :(得分:0)
在两种情况下,您的代码都会执行13个循环。 因为您知道预编译时的两个循环数量,所以复杂度将为O(13)= O(1)。如果第二个示例中的a变量是动态生成的,则循环的复杂度为O(a)= O(n)。因为您不知道a有多大。