给定代码的时间复杂度

时间:2010-08-23 07:58:52

标签: c++ time-complexity

此代码的时间复杂度是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;
    }
}

2 个答案:

答案 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)。