这个代码的最坏情况?

时间:2014-12-07 19:26:21

标签: c++ big-o time-complexity

n = 0;
sum = 0;
cin >> x;
while (x != -999) 
{
    n++;
    sum += x;
    cin >> x;
}
mean = sum / n;

我理解如何找到算法的复杂性。 我的问题是,我不确定这是否可以解决,因为它依赖于输入。 对于最坏的情况,我认为输入永远不会等于-999,所以最坏的情况复杂性是无穷大。 这是正确的方法吗?在此先感谢!!

2 个答案:

答案 0 :(得分:2)

执行此算法所需的时间与输入数量呈线性关系。如果有无限输入(从不-999)则需要无限时间。但它仍然是O(n)。

答案 1 :(得分:-1)

你是对的,不可能解决这个问题。在这种情况下,如果您的输入完全满足条件,我会说它是最佳情况。在大多数情况下,循环将永远存在,即使你包含变量溢出,x几乎没有机会等于-999(并且溢出是指用户输入非常大的数字然后被解析的情况到负数)。

为了复杂性理论,该算法的运行时间为O(k),其中k代表循环执行的次数。并且很好地假设它是无限的。