2011-05-14 70 views
3

這些陳述的複雜性是什麼?複雜性(初學者問題)

for(int k = 1; k < n; k++) 
    for(int i = 0; i < n-k; i++){ 
     //O(1) operation here 
    } 

解釋讚賞。

+2

_you_認爲它是什麼?你是如何得出這個結論的?我們希望看到_some_工作由askers完成。 – Oded 2011-05-14 14:54:14

+0

O(n log(n))。這是我的想法,但我很懷疑,所以我問。 – 2011-05-14 14:57:48

回答

4

首先在外環中進行操作n-1次。 第二次你去做吧n-2次,...把這些加起來,你將以(n)*(n-1)/2作業結束。

要看到這個總和,把它從1寫到(n-1),然後從(n-1)寫到1並且逐個添加每個項。

1 2 3 ... n-3 n-2 n-1 
n-1 n-2 n-3 ... 3 2 1 
--------------------------- 
    n n n  n n n 

因此2 * sum = (n-1) * n

就複雜性而言,這大約是

+0

OP可能有興趣知道這被稱爲[三角形編號](http://en.wikipedia.org/wiki/Triangular_number)。當他還是個小孩時,有一個關於高斯的故事..他的老師告訴全班將所有數字從1到100加起來,以使他們保持忙碌。高斯注意到了這種模式,並能夠迅速計算出答案,讓他的老師大吃一驚。 **編輯:**我剛剛意識到這個問題是5個月大..不知道我是如何到達這裏。 – 2011-10-31 23:12:38