寻找论坛的大O符号

时间:2016-08-25 02:51:29

标签: big-o

我试图在我的工作中找到正确的找到某些公式的大O符号。这些公式中的每一个都是某些算法中的操作数。这些是公式:

Forumulas

a。)n 2 + 5n

b。)3n 2 + 5n

c。)(n + 7)(n - 2)

d。)100n + 5

e。)5n + 3n 2

f。)2n

中的位数

g。)n在低于1.0

之前可以除以10的次数

我的回答:

a。)O(n 2

b。)O(n 2

c。)O(n 2

d。)O(n)

e。)O(n 2

f。)O(n)

g。)O(n)

我的分析是否正确?

1 个答案:

答案 0 :(得分:3)

让我们一次完成这个。

  

a。)n 2 + 5.您的回答: O(n 2

是的!您正确地忽略了低阶词。

  

b。)3n 2 + 5n。你的答案: O(n 2

是的! Big-O吃午餐的常数因素。

  

c。)(n + 7)(n - 2)。你的答案: O(n 2

是的!您可以将其扩展为n 2 + 5n - 14并从那里删除低阶项以获得O(n 2 ),或者您可以意识到n + 7 = O(n)和n - 2 = O(n),看这是两个项的乘积,每个项都是O(n)。

  

d。)100n + 5.你的回答: O(n)

是的!再次,删除常量和低阶项。

  

e。)5n + 3n 2 。你的答案: O(n 2

是的!订单无关紧要; 5n仍然是一个低阶词。

  

f。)2n中的位数。你的答案: O(n)

这个在技术上正确但不是一个好的约束。请记住,big-O表示法给出了一个上限,你是正确的,数字n有O(n)个数字,但只是在n的数字位数渐近地小于n的意义上。要了解为什么这个界限不是很好,让我们看看数字10,100,1000,10000和100000.这些数字分别有2,3,4,5和6位数字。换句话说,增长十倍只会使位数增加一。如果你所拥有的O(n)是紧的,那么你每次将数字增加十倍时,你的数字会增加十倍,这是不准确的。 / p>

作为这一点的提示,如果一个数字有d个数字,那么它在10 d 和10 d + 1 之间 - 1.这意味着d位数的数值是指数作为d的函数。因此,如果您从一些数字开始,则数值指数会更大。尝试向后运行。如果您知道的数值指数大于位数,那么作为数值函数的位数意味着什么?< / p>

  

f。)在低于1.0之前n可以除以10的次数。你的答案: O(n)

这个在技术上也是正确的,但不是很好的约束。例如,让我们取数字100,000。在你降到1.0以下之前你可以将它除以10七次,但是给出O(n)的界限意味着你说答案是n的函数线性增长,所以加倍n应该加倍的次数你可以除以10 ......但实际情况是这样吗?

作为提示,在数字低于1.0之前将数字除以10的次数与该数字中的位数密切相关。如果你能弄清楚这个问题,你就会弄清楚(e)部分,反之亦然。

祝你好运!