``
void fun(int n)
{
for(i = 0; i < n; i++)
{
printf("i = %d\n", i);
}
}
时间复杂度:O(n)
**************************************
void fun(int n)
{
int i, j;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
printf("hello\n");
}
}
}
时间复杂度:O(n^2)
***************************************
void fun(int n)
{
int i;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
printf("hello\n");
}
}
for(i = 0; i < n; i++)
{
printf("world\n");
}
}
时间复杂度:O(n^2)
***********************************
void fun(int n)
{
int i;
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
for(z = 0; z < n; z++)
{
printf("i = %d, j = %d\n", i, j);
}
}
}
}
时间复杂度:T(n) = O(n^3);
总结:有a层循环,T(n)= O(n^a);
练习:计算冒泡排序的时间复杂度
for(i = 0; i < n-1; i++)
{
for(j = 0; j < n-i-1; j++)
{
....
}
}
**************************************************
void fun(int n)
{
int i;
for(i = 1; i < n; i *= 2)
{
printf("一动不动,像是中暑!\n");
}
}
时间复杂度:
分析:T(4)= 2 T(8)= 3
n = 2^T(n) T(n) = log2n
************************************************
练习:设某算法的计算时间表示为递推关系式T(n)=T(n-1)+n(n为正整数)
及T(0)=1,则该算法的时间复杂度为:
T(n)=T(n-1)+n
T(n-1) = T(n-2)+n-1
T(n)=T(n-2)+n-1+ n
=T(n-3)+n-2 + n-1 + n
.....
=1+2+....+n
=(n*(n+1))/2
=O(n^2)
代码片