代码之家  ›  专栏  ›  技术社区  ›  irish Senthil

声明变量是否对大O表示法有效?

  •  1
  • irish Senthil  · 技术社区  · 6 年前

    假设在Java中,我声明了一个新变量: int k=0; 这将计入O符号,还是忽略O符号?

    3 回复  |  直到 6 年前
        1
  •  3
  •   Shanu Gupta    6 年前

    大O表示法忽略常量。

    int k = 0;
    

    是单个常量变量(就内存而言)。

    但是下面的循环 O(n) 复杂性

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

    因为它会运行 k++ n 《泰晤士报》。

        2
  •  1
  •   Joachim Sauer    6 年前

    这样声明变量不应:

    int k;
    

    这样分配给它会:

    k = 0;
    

    像这样的初始化将同时执行这两项操作,因此它将起作用:

    int k = 0;
    

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

        3
  •  1
  •   pramesh    6 年前

    O表示法用于测量代码的复杂性。这意味着它执行的语句数。如果使用嵌套循环,则一个循环在另一个循环中,在这种情况下,复杂性为O(n^2),因为每个迭代对应于一个n,并且由于一个循环在另一个循环中,n^2可以相互关联。然而,您的代码只是初始化一个变量,因此可以认为它是O(1)复杂度,因为它是在恒定的时间内执行的。然而,如果需要任何计算来为变量提供任何值,则应考虑该计算的复杂性。

    希望这有帮助:)