大O表示时间复杂度(最差的情况)

本文详细介绍了时间复杂度的概念,通过示例说明了不同算法的时间复杂度,如线性时间O(n)、平方时间O(n^2),以及空间复杂度的基本概念。重点强调在算法评估中考虑数据规模对效率的影响。
摘要由CSDN通过智能技术生成

大O表示时间复杂度(最差的情况)

一、时间复杂度

衡量一个算法的快慢,一定要考虑数据规模的大小。所谓数据规模,一般指输入的数字个数、输入中给出的图的点数与边数等等。一般来说,数据规模越大,算法的用时就越长。而在算法竞赛中,我们衡量一个算法的效率时,最重要的不是看它在某个数据规模下的用时,而是看它的用时随数据规模而增长的趋势,即时间复杂度。
T(n)=O(f(n))
O代表正比例关系;
n代表执行次数;
其他复杂度指标
big Omega:最好的情况
big theta:一个算法的区间

二、代码示例

1、示例1

for(int=i;i<=n;i++)
{
    x++;
}

结果为: O ( 1 + 3 N ) = 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 ( n 2 ) 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 + n 2 ) = O ( n 2 ) O(n+n^2)=O(n^2) O(n+n2)=O(n2)

4、示例4

int i=1;
while(i<n){
    i=i*2;
}

结果为:
O ( l o g N ) O(logN) OlogN
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;
}
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值