【发布时间】:2022-02-02 07:21:13
【问题描述】:
我正在尝试计算这两种算法的时间复杂度。我所指的这本书详细说明了每种方法的这些时间复杂度。
A) 算法 A:O(nlogn)
int i = n;
while (i > 0)
{
for (int j = 0; j < n; j++)
System.out.println("*");
i = i / 2;
}
B) 算法 B:O(n)
while (n > 0)
{
for (int j = 0; j < n; j++)
System.out.println("*");
n = n / 2;
}
我可以看到算法如何。 A 是O(nlogn)。 for 循环是 O(n),while 循环是 O(logn)。但是我没有看到 AlgoB 的时间复杂度是 O(n)。我也期待它是O(nlogn)。任何帮助将不胜感激。
【问题讨论】:
-
假设
n是一百万。for循环将在B中迭代多少次? -
您可以尝试证明第二种情况下打印的星数在
n和2*n-1之间,对于任何n>0。 -
请注意,虽然外循环在两者中执行的迭代次数相同,但内循环不会。
-
模糊的标题。编辑更具体。 什么的时间复杂度?
标签: java time-complexity