时间复杂度
T(n) = O(f(n))
f(n) 表示每行代码执行次数之和
O 表示正比例关系
O(1)<O(log2n)<O(n)<O(nlog2n)<O(n*2)<O(n*3)<O(2*n)<O(n!)<O(n*n)
for(i=1; i<=n; ++i)
{
j = i;
j++;
}
执行2n+1次,常数及倍数可以忽略了
O(n)
int i = 1;
int j = 2;
++i;
j++;
int m = i + j;
上述代码未用到循环,时间复杂度就是O(1)
int i = 1;
while(i<n)
{
i = i * 2;
}
可以看到i执行i*2 会无限接近于n 所以可以得到2*x=n ---->x=log2*n
所以说执行log2*n次以后该代码结束
O(log2*n)
for(m=1; m<n; m++)
{
i = 1;
while(i<n)
{
i = i * 2;
}
}
在O(log2*n)外加n层循环就是nlog2*n
for(x=1; i<=n; x++)
{
for(i=1; i<=n; i++)
{
j = i;
j++;
}
}
O(n)外面在来一个n次循环