2015-08-23 85 views
5

我是一個完整的新手在大澳,我有點被這個難住。 我:大O N^2(日誌N)

for (int i = 1; i < n*n; i *= 2) 

在我看來,這將等同於N^2 * Log N

我說得對還是你與n*n加倍投入,並與i *= 2減半它可以將其簡化爲N?

回答

9

在這種情況下,你有

O(log2(n^2)) 

這是

O(2 * log2(n)) 

或只是

O(ln N) 

注意如果n * n > (1 << 30)你將有一個無限循環。

+0

謝謝@Peter。所以我錯了,謝謝你的幫助。所以這隻會等於O(2Log2(n))。但這是如何工作的?我想如果你把輸入空間加倍,它就變成了N^2,如果你將迭代次數減半,它就變成了Log2N,那麼它們不會相乘?我一直在努力尋找每一個我能找到的例子,並找到模式,但對我來說這是一個新的例子 – Matt

+0

@Matt位O不考慮涉及的因素。這意味着雙或O(n)是O(n)。這就是爲什麼O(logBase10(N))與O(InN)相同; –

+0

好的。說得通。感謝您的所有幫助@Peter。 – Matt