0
任何人都可以告訴我下面的代碼的複雜性,並解釋計算?三個循環的複雜性
int count=0;
for(int i=0; i<n;i++)
for(int j=i; j<n;j++)
for(int k=j;k>i;k--)
count++;
感謝
任何人都可以告訴我下面的代碼的複雜性,並解釋計算?三個循環的複雜性
int count=0;
for(int i=0; i<n;i++)
for(int j=i; j<n;j++)
for(int k=j;k>i;k--)
count++;
感謝
這僅僅是一個 「簡單」 的數學:
對於第一循環,其相當簡單,它會做n
迭代。
二回路是不是要複雜得多:
i=0
:你將有n
迭代。i=1
:n-1
迭代i=2
:n-2
迭代...
i=n-1
:總的1
迭代是n(n+1)/2
。
i=n-1
:你有0
迭代 第三循環中,我們當j>i
只是感興趣。
i=n-2
:1
迭代,那就是當j=n-1
i=n-3
:2
迭代時j=n-1
和1
迭代時j=n-2
i=n-4
:3
迭代時j=n-1
,2
迭代時j=n-2
,1
迭代時j=n-3
...
i=0
:n-1
迭代時j=n-1
,n-2
迭代時j=2
,...,1
迭代時j=1
運行的這段時間是:
O((n-1)n/2 + (n-2)(n-1)/2+...+(n-n+2)(n-n+1)/2+(n-n+1)(n-n)/2)=O((n-1)*(n^2)/2)=O(n^3)
他們能?是的,但他們在這個網站上這樣做不合適。 (人們不喜歡被要求在這裏爲其他人做功課) – byxor
我不是要求任何人做功課,我只需要一些幫助 –
它肯定覺得像功課。這裏有一個提示:統計嵌套循環的數量。找出答案是至關重要的。 – byxor