2010-08-23 51 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)。