声明变量是否计入大 O 表示法?

Does declaring a variable count towards big O notation?

让我们在 Java 中声明一个新变量: 诠释 k = 0; 这会计入 O 表示法,还是我会为 O 表示法忽略它?

大 O 符号忽略常量。

int k = 0;

是一个单一的常数变量(在内存方面)。

但是接下来的循环会 O(n) 复杂

for(int k=0;k<n;k++){}

因为它会 运行 k++ n 次。

像这样声明一个变量不应该:

int k;

像这样分配给它:

k = 0;

像这样的初始化会同时执行这两个操作,因此它会计算在内:

int k = 0;

请注意,即使是最后一个也只会贡献一个常数因子(将被忽略),除非它在某个循环中执行。

O表示法用于衡量代码的复杂度。这意味着它执行的语句数。如果您在另一个循环中使用一个嵌套循环,那么复杂度为 O(n^2),因为每次迭代都对应一个 n,并且由于一个循环在另一个循环中,n^2 可能是相关的。但是,您的代码只是简单地初始化一个变量,因此可以将其视为 O(1) 复杂度,因为它是在恒定时间内执行的。但是,如果需要任何计算来为变量提供任何值,则应考虑该计算的复杂性。

希望对您有所帮助:)