【例 2】求两个n阶矩阵的的乘积算法
#include<iostream>
using namespace std;
int main()
{
for(k=1;k<=n;k++)//执行n+1次
{
x++;//执行n次
}
for(i=1;i<=n;i++)//执行n+1次
{
for(j=1;j<=n;j++)//执行n*(n+1)次
{
y++;//执行n*n次
}
}
return 0;
}
所以他的频度为
f
(
n
)
=
O
(
n
2
)
f(n)=O(n^2)
f(n)=O(n2)所以该算法的时间复杂度为
T
(
n
)
=
O
(
n
2
)
T(n)=O(n^2)
T(n)=O(n2)
【例 3】立方阶示例
#include<iostream>
using namespace std;
int main()
{
int x=1;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
for(k=1;k<=j;k++)
x++;
return 0;
}
Tips:
1.先确定频度最高的语句
2. 然后计算
∑
1
N
∑
j
i
∑
k
j
\sum_1^N\sum_j^i\sum_k^j
∑1N∑ji∑kj 1=
∑
1
N
∑
j
i
\sum_1^N\sum_j^i
∑1N∑ji j =
∑
i
n
\sum_i^n
∑in i*(i+1)/2=
for(i=1;i<=n;i=i*2)
{ x++;s=0;}