声明变量是否计入大 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) 复杂度,因为它是在恒定时间内执行的。但是,如果需要任何计算来为变量提供任何值,则应考虑该计算的复杂性。
希望对您有所帮助:)
让我们在 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) 复杂度,因为它是在恒定时间内执行的。但是,如果需要任何计算来为变量提供任何值,则应考虑该计算的复杂性。
希望对您有所帮助:)