繁体   English   中英

2个嵌套循环的时间复杂度

[英]Time complexity for 2 nested loops

如果我通过 2 个这样的嵌套 For 循环输入

cin>>x;

for(i=0;i<x;i++)
{
   cin>>y;

for(j=0;j<y;j++)

}

外循环的复杂度是 O(X) 但我对内循环的时间复杂度感到困惑,因为 Y 是可变的。

外循环的复杂性不是O(x) ,因为运行外循环所需的时间取决于输入的 y 的值。

假设我们有一个y1,y2,...,yn的输入序列。 然后第一个循环将进行y1次操作,第二次迭代将进行y2次操作,依此类推,每次迭代x次。

现在让Y是这个输入序列的最大值,那么外循环的每次迭代将最多进行Y次操作。 因此,对于x次迭代,每次最多进行Y次操作,我们得到 O(xY)。

可以进一步指定可能更小的 class 函数,但重要的是要记住,如果f < gO(f)包含在O(g)中。 当我们说 function 是O(f)时,我们只是说它在 class O(f)内部。

考虑到在这种情况下,输入不是使用最大值确定的,这将是最坏的情况。

如果输入在所有循环之外,它也会更准确,因为输入在大多数情况下都不是一个恒定的操作。 (虽然这很简单,只需从文件或其他东西输入 y ,然后用它来制作数组。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM