算法复杂度分为时间复杂度和空间复杂度。 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。复杂度的大小可以分为:O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n3)<O(2n)
那么,时间复杂度需要怎样计算呢!
【平行循环】
一个算法的时间复杂度要看这个算法的执行次数,首先要找这个方法的基础语句,算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
两个或者多个平行循环,它的时间复杂度是取这几个循环中循环次数最多的那个循环的循环次数来做这个算法的时间复杂度。
for(i=0;i<n;i++)
{
b[i][0]=0;
}
for(j=0;j<5;j++)
{
b[0][j]=0;
}
则这个算法的时间复杂度为O(n)
【嵌套循环】
嵌套循环的时间复杂度则是,将一个嵌套循环中的所有循环的复杂度的积
for(i=0;i<n;i++)
{
d[i]=0;
for(j=0;j<n;j++)
{
s[i][j]=0;
}
}
则这个算法的时间复杂度为O(n2)
也有一些嵌套循环中的单个循环的时间复杂度不想同的,这样的不影响按照嵌套循环的方法求解其时间复杂度
for(i=0;i<n;i++)
{
d[i]=0;
for(j=0;j<m;j++)
{
s[i][j]=0;
}
}
则这个算法的时间复杂度为O(mn)
【While循环】
while循环则是没有写到的
O(log2n)的循环体了。
i=1;
while (i<=n)
i=i*2;
则这个算法的时间复杂度为
O(log2n)
【总结】