Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 嵌套循环的时间复杂度计算_Algorithm_Time Complexity - Fatal编程技术网

Algorithm 嵌套循环的时间复杂度计算

Algorithm 嵌套循环的时间复杂度计算,algorithm,time-complexity,Algorithm,Time Complexity,我正在练习算法的时间复杂性,我遇到了下面的代码,这让我很困惑。一般来说,我可以通过观察循环的数量来判断算法的复杂度,但是下面的代码会破坏这个假设,因为有两个循环,我通常会假设复杂度为^2,但在第二个循环中,N是平方。这让我得出这样的结论:复杂性在^2=^3上。我做错什么了吗 for (int i = 0; i*i < N; i++) for (int j = 0; j*j < N*N; j++) 外部循环将在i^2

我正在练习算法的时间复杂性,我遇到了下面的代码,这让我很困惑。一般来说,我可以通过观察循环的数量来判断算法的复杂度,但是下面的代码会破坏这个假设,因为有两个循环,我通常会假设复杂度为^2,但在第二个循环中,N是平方。这让我得出这样的结论:复杂性在^2=^3上。我做错什么了吗

for (int i = 0; i*i < N; i++)
   for (int j = 0; j*j < N*N; j++)

外部循环将在i^2 内循环将在j^2
因此,总迭代次数为N^0.5*N=N^3/2。

外部循环将在i^2 内循环将在j^2 因此,总迭代次数为N^0.5*N=N^3/2。

这在sqrtn=On^3/2上具有时间复杂性

外部循环需要Osqrtn时间。它在~sqrtn次迭代后结束,因为i按其平方增长,而N仅线性增长。

例如,考虑n=100;i^2接受值1、4、9、16、…、100,这是sqrtN不同的值。这就是Osqrtn

内循环需要时间-在每一步都取j和N的平方根,这应该清楚地表明这是一个线性循环。

例如,考虑n=10;j^2采用值1、4、9、16、…、100,这是N个不同的值。这是开着的。

这在sqrtn=On^3/2上有时间复杂度

外部循环需要Osqrtn时间。它在~sqrtn次迭代后结束,因为i按其平方增长,而N仅线性增长。

例如,考虑n=100;i^2接受值1、4、9、16、…、100,这是sqrtN不同的值。这就是Osqrtn

内循环需要时间-在每一步都取j和N的平方根,这应该清楚地表明这是一个线性循环。

例如,考虑n=10;j^2采用值1、4、9、16、…、100,这是N个不同的值。所以这是开着的。

也被称为On sqrt,我认为这是另一种方式。外部循环打开,内部循环打开^2。你能证明你的答案吗?我想理解它。@sasha你能解释一下为什么内部循环会在OsqrtN中运行吗?@PRCube有一些奇怪的格式错误,也就是所谓的On-sqrt-nI认为是另一种情况。外部循环打开,内部循环打开^2。你能证明你的回答正确吗?我想理解它。@sasha你能解释一下为什么内部循环会在OsqrtN中运行吗?@PRCube在