我需要计算以下循环的时间复杂度:
for (i = 1; i < n; i++)
{
statements;
}
假设n = 10,
i < n;
控制语句是否要运行n次,i++;
语句是否要运行n-1次?并且知道i = 1;
语句将运行一个时间单位。
在for循环中计算这三个语句的总时间复杂度,得出1 + n + n-1 = 2n,而带有语句的循环得出2n + n-1 = 3n-1 = O(n)。>
我的计算到目前为止是否正确?
答案 0 :(得分:0)
是的,您的计算是正确的,像这样的for循环将使用O(n)表示法。
类似地,您可以进行如下计算:
for(int i = 0; i <n*2; i++){
//calculations
}
在这种情况下,for循环的O符号表示为O(n ^ 2)(您会明白)
此循环需要O(n ^ 2)时间;数学函数= n ^ n这样,您可以计算循环需要n 10或100或1000的时间
这样,您可以为循环等建立图形。
DAle在评论中提到,大的O表示法不受循环内计算的影响,仅受循环本身的影响。