赞
踩
时间复杂度一般指时间复杂性。
常见的时间复杂度有:常数阶T(n) = O(1),对数阶O(logn),线性阶O(n),线性对数阶O(nlogn),平方阶O(n^2),三次方阶O(n^3)。
一、常数阶T(n)=O(1)
int a=1;
cout<<a<<endl;
即只执行了一次,所以T(n)=O(1)
二、对数阶O(logn)
int n;
cin>>n;
for(int i=1;i<=n;i=i*2)
{
cout<<i<<” ”;
}
因为每一次i都是*2,设循环x次后循环就结束,也就是以2为底,x为指数然后等于n(因为x>n,这个循环就结束了),那么x= log2^n,简记O(logn)。
三、线性阶O(n)
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<i<<” ”;
}
因为每一次i都是i++,等i>n时,循环就结束,即设循环x次后就结束,此时x=n;
所以时间复杂度为O(n)。
四、线性对数阶O(nlogn)
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int j=1;
while(j<n)
{
j*=2;
}
}
由例子很容易知道线性对数阶是由线性时间复杂度和对阶时间复杂度结合而来的。
每i+1时,都会有logn的时间复杂度,而i要执行n次,所以总共的时间复杂度就是
O(nlogn)。
五、三次方阶O(n^3)(由于二次方比三次方只是少一个循环,所以这里只讲三次方的)
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
}
}
其实这个也可以以用线性时间复杂度来理解,三次方阶就是嵌套了三个线性的循环。
因此,它的时间复杂度是O(n*n*n),即O(n^3)。
此外,附上其他的时间复杂度,有兴趣的读者可以去学:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。