【发布时间】:2019-06-13 13:58:52
【问题描述】:
我无法找出算法 A 和算法 B 的时间复杂度,请大家帮帮我!!!
算法 A:
for(int i=n; i>=1; i/=2)
some statement
如果我没记错的话,
i = n;
i = n / 2 to the power of 1;
i = n / 2 to the power of 2;
i = n / 2 to the power of 3;
i = n / 2 to the power of 4;
.................
.................
i = n / 2 to the power k;
Algo A terminate when,
n / 2 to the power of k < 1
Therefore k = log n, Algo A take logn time;
算法 B:
for(i=n; i>=1; i/=2)
for(j=0; j<i; j++)
some statement
伙计们,我无法找出算法 B 的时间复杂度,所以如果我对算法 A 有误,如何计算并纠正我
【问题讨论】:
-
如果“某个语句”在恒定时间内运行,则算法 A 确实运行在 O(log n) 中。计算算法B的时间复杂度遇到了什么麻烦?
-
与
some statement相同的逻辑是一个简单的循环(我希望你知道它的复杂性)。 -
如果同样的逻辑适用于算法 B “some statement” 执行 n + n/2 + n /4........n / 2 的 k 次方,那么复杂度将是 O(logn) 还是 O(N) ?
标签: java data-structures time-complexity big-o