有人可以解释为什么这些运行时间是正确的吗?

时间:2016-12-11 22:45:23

标签: algorithm sorting runtime big-o big-theta

对于所有大小大于或等于500的输入,算法在时间n ^ 2 + 3n + 5中运行,对于所有小于500的输入大小,算法在时间2 ^(2n)中运行。从下面选择所有真实语句:< / p>

1: Its running time is O(2^(n))
2: Its running time is O(n^(2))
3: Its running time is Θ(n^(2))
4: Its running time is Θ(2^(2n))
5: Its running time is O(4^(n))
6: Its running time is Ω(n^(2))

正确的答案是:1,2,3,5,6

我不知道所有这些都可以解决上面的问题,请帮忙!

1 个答案:

答案 0 :(得分:1)

请记住,big-O表示法仅涉及长期函数的行为。回顾一下定义:

  

f(n)= O(g(n))如果有数字n 0 且c使得对于任何n≥n 0 ,我们有f(n)≤c·g(n)。

对于您的函数,您的函数表现为“小”输入的一种方式和“大”输入的一种方式。 Big-O符号只会真正考虑“大”情况,所以你可以证明你的函数是O(n 2 ),因为对于任何n≥500,我们都有

  

f(n)= n 2 + 3n +5≤5n 2

big-Ω的定义以相同的方式工作 - 它只考虑“足够大”的输入,所以你可以说你的函数是Ω(n 2 ),因为对于任何n≥500,我们有

  

f(n)= n 2 + 3n +5≥n 2

这意味着你的函数也是Θ(n 2 )。

那么其他答案呢?好吧,O(n 2 )的任何函数 O(4 n ),因为big-O表示法是一个上限,而不是紧紧的约束。然而,它不是Θ(4 n ),因为函数不是Ω(4 n ),因为4 n 的增长速度要快于n 2 长期。