时间复杂度和空间复杂度

这个任何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时指的是? 时间复杂度

上一篇:3


下一篇:中小学数学卷子自动生成程序_互评