时间复杂度和空间复杂度

这个任何AI工程师必须要深入理解的概念。对于每一个设计出来的算法都需要从这两个方面来分析O(N),O(N^2)

时间复杂度:在时间上要多久

空间复杂度:内存大小需要多少

int a = 0,b = 0;

for (i = 0;i < N; i++){  # O(N)+O(N) = O(N)
    a = a + rand();   # 这里需要N*1个操作 = O(N)
    b = b + rand();   # 这里需要N*1个操作 = O(N)
}
for (j = 0;j < N/2;j++){
    b = b + rand(); #N/2 *1个操作 = 1/2 * O(N) = O(N) 
}

有常数我不管

时间复杂度? O(N)

空间复杂度?就用了ab  2个单位的内存空间 = O(1) # constant space complexity

int a = 0;
for (i = 0;i < N; i++){
    for (j=N;j >i;j--){
           a = a + i + j;
    }
}



i = 0: j=N...1   N
i = 1: j=N...2   N-1
i = 2: j=N...3   N-2
i=N-1:  j=N      1

total = 1+2+3,...+N = N*(N+1)/2 = N*N/2 + N/2
=1/2*O(N^2) + 1/2*O(N) = O(N^2)+O(N) = O(N^2)

我们每当说算法X的效率要高于Y时指的是? 时间复杂度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值