我正在准备考试,看到这个问题,所以我做了以下,这是正确的吗?
while 循环的运行时间为 O(log3n)。
for 循环的运行时间约为 O((n-(some math))*log2n) 所以因为我有线性的减号,所以我说整个方法的运行时间为 O(nlogn),除非我错了并且它是就像是
O((n-(n/log3n))*log2n)
这里的负数是否是线性的?如果不是,正确的 bigO 是什么?
public void foo (int n, int m)
{
int i = m;
while (i>100)
i = i/3;
for (int k=i; k>=0; k--)
{
for (int j=1; j<n; j*=2)
System.out.print(k + "\t" + j);
System.out.println();
}
}
while循环运行在O(logm)
.
while 循环结束后,i
内循环将运行O(logn)
次,对于外循环的每次迭代。所以总时间是O(logm + 100*logn)
= O(logm + logn)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)