我是一名行业的UI开发人员,但我的学位是英语,所以我一直在努力尝试一些更具形成性的CS课程来改善我的基础。现在我在Data Structures类中,最近我们的类出现了以下问题:
a)假设在下面的伪代码中评估函数f(n) Θ(n)时间。
i = 1;
sum =0;
while (i <= n)
do if (f(i) > k)
then sum += f(i);
i = 2*i;
上述的运行时间(使用渐近符号)是多少? 码?证明你的答案。
我的答案以及课堂上的许多其他人都是 n log n ,因为外部while循环将在 log(n)中运行 和while循环内部的渐近运行时间(Θ(n))紧密绑定到 n 。
教授的回答是,它会在 n 时间内运行。在不知道 k 或 f(n) 的情况下,这怎么可能?
答案 0 :(得分:0)
n = 4:1 + 2 + 4 = 7步的时间
n = 8:1 + 2 + 4 + 8 = 15
的时间n = 16:1 + 2 + 4 + 8 + 16 = 31
的时间2的权力总时间为2n-1,总计为O(n)...对不起O:)