for循环的时间复杂度

时间:2019-02-12 14:10:09

标签: time-complexity big-o

我需要计算以下循环的时间复杂度:

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)。

我的计算到目前为止是否正确?

1 个答案:

答案 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表示法不受循环内计算的影响,仅受循环本身的影响。