此代码的时间复杂度是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;
}
}
答案 0 :(得分:8)
内部循环确实将工作从n减少到1,并且正在完成的实际工作(交换数字)是O(1),所以:
n个操作+(n - 1)个操作+(n - 2)个操作+ ... + 2个操作+ 1个操作= sum(1,n)个操作=(n *(n + 1))/ 2 = (n 2 + n)/ 2 = O(n 2 )
答案 1 :(得分: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)。