算法的时间复杂度的计算

来源:百度知道 编辑:UC知道 时间:2024/05/19 15:36:02
for (i=2;i<=n;i++)
for(j=2;j<=i-1;++j)
{
++x;a[i j]=x;
}
的时间复杂度怎么计算,最好能给的详细点啊.谢谢啊
最好能具体下啊,答案我也知道啊

不考虑运算常量,

A: for (i=2;i<=n;i++)
B: for(j=2;j<=i-1;++j)
{
C: ++x;a[i j]=x;
}

A 执行1次,B 执行n-1次,问 C 执行几次?
因为 B 的时间复杂度是依赖于参数i的,所以 C 也同样依赖于参数i,
列出关系:
O(A) = O(B2)+O(B3)+...+O(Bn)
O(Bi) = O(Ci,2)+O(Ci,3)+...+O(Ci,i-1)
设 O(Ci,j) = 1
求得
O(Bi) = ((i-1) - 2) + 1 = i-2
O(A) = 0 + 1 + ... + (n-2) = (1+n-2)*(n-2)/2 = n2 - 3/2n + 1
约去低阶分量,O(A)=n2.

n的平方*2
1.比较次数:
i:n-1约等于n
j:1+2+3+……+(n-1)=(n方-n)/2
总:n+(n方-n)/2=(n方+n)/2
2.加法运算次数
i:约为n
j:(n方-n)/2
x:(n方-n)/2
总:相加得n方
3.赋值运算次数
a[i][j]:(n方-n)/2

总的时间复杂度约为
(n方+n)/2+n方+(n方-n)/2=2n方