时间复杂度:while循环嵌套for循环[java]

时间:2016-09-20 20:51:07

标签: java time-complexity

所以我刚刚开始学习时间的复杂性,而且我有一点" okayish"抓住它然而我对如何处理这段代码有点困惑。 我已经阅读了其他帖子,但我只是很难抓住东西,除非有人屠宰我要说的话。有点像一记耳光。

node_modules/@types

好的,我只计算算术运算。 从我的信念来看,如果我错了(可能是我),请纠正我,

x ++ 发生了n次。

结果+ = 1 发生了n次。

结果+ = 3 *数组[x] 发生2次

全部总计 4n

i = i / 2 发生登录

正确的等式是 4nlogn ??

1 个答案:

答案 0 :(得分:4)

您与4n*log(n)走在正确的轨道上。但请注意,对于大O时间复杂度,常量被删除,因此这将是O(n*log(n))

由于大O定义,常量被移除:f(x) O(g(x))如果所有f(z) <= c*g(z)的{​​{1}}&gt;一些数字。这里的关键是z,它可以是任何常量。即使您的cf(x),您仍然可以100xc=200仍然会更大。

作为旁注,由于我们可以分解常量,因此在计算大O时间复杂度时不必计算每个操作。你只需看看循环。一次发生g(x)次,其他发生n次。所以它是log(n)。代码可以在每个循环内执行1000次操作,或者它可以执行2.因为常量是从我们的大O方程式中计算出来的,所以这个数字并不重要。只有循环的数量和性质。