时间复杂度算法分析-整理(浅)
如果内外循环之间的循环量之间没关系,可将内外循环次数(语句频度)之积作为复杂度看待
若有关系,则考虑内循环的基本操作的执行次数(语句频度)来分析复杂度。
其实计算时间复杂度可以直接看频度最大(最内层的)的语句的语句频度(个人观点)。
【内循环】例:
for(i=2;i<=n;++i){
for(j=2;j<=i-1;++j){
++x;
}
}
2<=i<=n;j<=i-1 ——> 1<=j<=n-1 又 初始j=2 ——> 2<=j<=n-1
++x 执行次数:1,2,3,4,....,n-2
求和语句执行频度 : 1+2+3+…+n-2=(1+n-2) ×(n-2)/2=(n-1)(n-2)/2 =n2-3n+2,为n2的同阶,所以时间复杂度为O(n2)
语句频度(摘):
for(i=0;i<n;i++){ ----------------------------- (1) n+1
for(j=0;j<n;j++){ ------------------------- (2) n(n+1)
c[i][j]=0; ------------------------------ (3) n*n
for(k=0;k<n;k++) ------------------- (4) n*n*(n+1)
c[i][j]=c[i][j]+a[i][k]*b[k][j]; ------- (5) n*n*n
}
}