0
int unknown(int n)
{
int i,j,k=0;
for(i=n/2;i<=n;i++)
for(j=2;j<=n;j=j+2)
k=k+n/2;
return k;
}
我提到的複雜性是對的嗎?如果是,怎麼樣?請詳細解釋。該程序如何具有時間複雜性大哦(n^2logn)?
int unknown(int n)
{
int i,j,k=0;
for(i=n/2;i<=n;i++)
for(j=2;j<=n;j=j+2)
k=k+n/2;
return k;
}
我提到的複雜性是對的嗎?如果是,怎麼樣?請詳細解釋。該程序如何具有時間複雜性大哦(n^2logn)?
外循環執行n/2次
內循環執行(n - 2)/ 2次。
(與整數除法忽略截斷效應)
所以複雜性爲O(n^2)。 (假設所有算術運算都是O(1))
如何解釋爲什麼你認爲這是正確的,然後問你的推理是否有任何錯誤?這會提出更好的問題。 – paisanco
@paisanco說什麼,但也(不太重要)適當地格式化您的代碼,以便於閱讀 – 2015-07-03 17:45:57
@paisanco我以這種方式提出我的問題的原因是因爲我確信答案是正確的。儘管我沒有相信,但由於參考書很少,它的正確性。我沒有漸進分析的流量,這就是爲什麼這樣說。 – angrysumit