大O表示时间复杂度(最差的情况)
一、时间复杂度
衡量一个算法的快慢,一定要考虑数据规模的大小。所谓数据规模,一般指输入的数字个数、输入中给出的图的点数与边数等等。一般来说,数据规模越大,算法的用时就越长。而在算法竞赛中,我们衡量一个算法的效率时,最重要的不是看它在某个数据规模下的用时,而是看它的用时随数据规模而增长的趋势,即时间复杂度。
T(n)=O(f(n))
O代表正比例关系;
n代表执行次数;
其他复杂度指标
big Omega:最好的情况
big theta:一个算法的区间
二、代码示例
1、示例1
for(int=i;i<=n;i++)
{
x++;
}
结果为:O(1+3N)=O(N)O(1+3N)=O(N)O(1+3N)=O(N)
N趋向于无限大,忽略常数和倍数
2、示例2
for(int=i;i<=n;i++)
{
for(int j;j<=n;j++){
x++;
}
}
结果为:
O(n2)O(n^2)O(n2)
3、示例3
for(int=i;i<=n;i++)
{
x++;
}
for(int=i;i<=n;i++)
{
for(int j;j<=n;j++){
x++;
}
}
结果为:
O(n+n2)=O(n2)O(n+n^2)=O(n^2)O(n+n2)=O(n2)
4、示例4
int i=1;
while(i<n){
i=i*2;
}
结果为:
O(logN)O(logN)O(logN)
2^k=n;
k=logN;
常见空间复杂度
示例一:O(1)O(1)O(1)
int x=0;
int y=0;
x++;
y++;
示例二:
O(n)O(n)O(n)
int[]newArray=new int[n];
for(int i=0;i<n;i++)
{
newArray[i]=i;
}
本文详细介绍了时间复杂度的概念,通过示例说明了不同算法的时间复杂度,如线性时间O(n)、平方时间O(n^2),以及空间复杂度的基本概念。重点强调在算法评估中考虑数据规模对效率的影响。
679

被折叠的 条评论
为什么被折叠?



