2010-08-23 81 views
-1

這是什麼代碼交換a[i,j]a[j,i]j > i(轉置給定的矩陣)的時間複雜度:時間的給定的代碼複雜

for(i=1;i<=(n-1);i++) 
{ 
    for(j=(i+1);j<=n;j++) 
    { 
     T=a[i,j]; 

     a[i,j]=a[j,i]; 

     a[j,i]=T; 
    } 
} 
+1

你覺得呢?你是如何得出答案的? – 2010-08-23 08:02:44

+2

這是你的功課嗎? – Calmarius 2010-08-23 08:05:26

+1

一個不錯的和容易的教程 - http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=complexity1 – DumbCoder 2010-08-23 08:11:03

回答

8

內環確實減少從n個工作爲1,並且實際完成的工作(交換數字)爲O(1),因此:

n操作+(n-1)操作+(n-2)操作+ ... + 2操作+1操作= sum(1 ,n)操作=(n *(n + 1))/ 2 =(n + n)/ 2 = O(n )

1
for(i=1;i<=(n-1);i++) { 
    for(j=(i+1);j<=n;j++) { 
     T=a[i,j]; 
     a[i,j]=a[j,i]; 
     a[j,i]=T; 
    } 
} 

的時間複雜度是O(n^2)。