#include<stdio.h>
int main()
{
int T,i,sum,n; //Here T is the test case
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
sum=0;
for(i=1;i<=n;i++)
sum=sum+i;
printf("%d\n",sum);
}
return 0;
}
如果我将测试用例输入为T=50
和n=100
。
哪个是正确的:时间复杂度O(n)=100
或时间复杂度O(n)=100*50
。
答案 0 :(得分:2)
Big-O分析的概念并非特定于某些值。通常用Big-Oh表示的Time Complexity不包括系数和低阶项。在您的代码中,时间复杂度为O(T * N)。永远不会是O(50 * 100)或O(100)。没有这样的符号。任何以恒定时间运行的算法(代码中为50 * 100)将表示为O(1)。
在一个班轮中,时间复杂度永远不会是一个值,它将表示为一个取决于输入大小的函数。
另外,为了清楚了解,我建议您阅读本教程:Time Complexity Analysis by MyCodeSchool