美文网首页
【时间复杂度与空间复杂度】

【时间复杂度与空间复杂度】

作者: 唯师默蓝 | 来源:发表于2020-11-04 15:15 被阅读0次
    for i in range(1,N):  #两个操作:O(N)+O(N)=O(N)
        a = a + rand()  #N*1个操作 = O(N)
        b = b + rand(); # N*1个操作 = O(N)
    
    
    for i in range(1,N/2):
        b = b+rand()   #N/2 * 1 个操作 = 1/2 * O(N) = O(N) 忽略前面的常数
    
    时间复杂度:O(N)
    
    空间复杂度:定义了a,b与范围N无关:两个单位的内存空间 = O(1),常数的时间复杂度
    
    
    int a = 0;
    for(i=0;i<N;i++){  #外层操作N次
        for(j=N;j>i;j--){
            a = a+i+j;
        }
    }
    
    
    i=0:  j=N到1
    i=1:  j=N到2
    ...
    i=N-1:  j=N
    操作总数:1+2+3+...+N = N*(N+1)/2
    
    时间复杂度:O(N^2)
    空间复杂度:O(1),只用到变量a,i,j,与范围N无关
    
    int a = 0,i=N;
    while(i>0){
        a += i;  # 一操作
        i /= 2;  # 二操作
    }
    
    假设N=40;i=40
    
    i=20 2个操作
    i=10 2
    i=5 2
    i=2 2
    i=1 2
    i=0 2
    total:2*6次操作
    2*log(N) = 2*O(logN)
    
    
    
    int i,j,k=0;
    for(i=n/ 2;i<=n;i++)
        for (j=2; j<=n;j=j*2) 
            k=k+n/2;
    O(N*logN)
    
    

    相关文章

      网友评论

          本文标题:【时间复杂度与空间复杂度】

          本文链接:https://www.haomeiwen.com/subject/xxygvktx.html