我想找到以下代码的时间复杂度,但我不确定我是否做得对。 Printf是基本过程。由于i*j or i*k
?
i=0; //c1
while (i<n){ //c2*(n+1)
for(j=i; j<n; j++) // c3*n*(n+1)
printf("The product of %d and %d is %d\n",i,j,i*j); //c4*n*n
for(k=n; k>i; k--) //c5*n*(n-1)
printf("The product of %d and %d is %d\n",i,k,i*k); //c6*n*n
i++; //c7*n
}
所以时间复杂度= c1 + c2 *(n + 1)+ c3 *(n ^ 2 + n)+ c4 * n ^ 2 + c5 *(n ^ 2 -n)+ c6 * n ^ 2 + c7 * n = c8 * n ^ 2 + c9 * n + c10
答案 0 :(得分:1)
要查找代码的时间复杂度,
i=0;
while (i<n){ // a loop will run n times
for(j=i; j<n; j++) // a loop will run n - i times
printf("The product of %d and %d is %d\n",i,j,i*j);
for(k=n; k>i; k--) //a loop will run n -i times
printf("The product of %d and %d is %d\n",i,k,i*k);
i++;
}
因此总数约为n *((n-i)+(n -i))。但是当n变为无穷大时,我们只需关心术语增长最快。所以它是O(n^2)
。