[英]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 < g
则O(f)
包含在O(g)
中。 当我们说 function 是O(f)
时,我们只是说它在 class O(f)
内部。
考虑到在这种情况下,输入不是使用最大值确定的,这将是最坏的情况。
如果输入在所有循环之外,它也会更准确,因为输入在大多数情况下都不是一个恒定的操作。 (虽然这很简单,只需从文件或其他东西输入 y ,然后用它来制作数组。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.