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)
#空间复杂度 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)
int a=0,i=N;
while(i>0){
a+=i; #1个操作
i/=2; #1个操作
}
N=40;i=40
i=20 2
i=10 2
i=5 2
i=2 2
i=1 2
i=0 2
terminate
2*log(N)=2*O(logN)=O(log N)
每当说算法X的效率要高于Y时指的是? 时间复杂度