大O符号:帮助我证明我的教授错了

时间:2018-02-20 21:47:36

标签: computer-science

我是一名行业的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) 的情况下,这怎么可能?

1 个答案:

答案 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:)