例题:
int i=1;
while(i<=n)
i=i*2
计算时间复杂度。
第一步:循环终止条件 i<=n
(i是循环变量或与循环变量有关的值,
n是问题规模)
第二步:循环变量增加 i=i2
第三步:假设执行t次 i=2^t
第四步:第三步代入第一步,2^t<=n,t<=log2 n.
时间复杂度O(log2 n)
结论:
for(i=a;i<=n^b;i=ic) -> O(log2 n)
for(i=a;i<=b*n;i=i+c) -> O(n)
例1:
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
T(n)=n+(n-1)+…+2+1=n(n+1)/2 -> O(n^2)
例2:
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
T(n)=1+2+…+n=n(n+1)/2 -> O(n^2)
例3:
int i=0,sum=0