n = 0;
sum = 0;
cin >> x;
while (x != -999)
{
n++;
sum += x;
cin >> x;
}
mean = sum / n;
我理解如何找到算法的复杂性。 我的问题是,我不确定这是否可以解决,因为它依赖于输入。 对于最坏的情况,我认为输入永远不会等于-999,所以最坏的情况复杂性是无穷大。 这是正确的方法吗?在此先感谢!!
答案 0 :(得分:2)
执行此算法所需的时间与输入数量呈线性关系。如果有无限输入(从不-999)则需要无限时间。但它仍然是O(n)。
答案 1 :(得分:-1)
你是对的,不可能解决这个问题。在这种情况下,如果您的输入完全满足条件,我会说它是最佳情况。在大多数情况下,循环将永远存在,即使你包含变量溢出,x
几乎没有机会等于-999
(并且溢出是指用户输入非常大的数字然后被解析的情况到负数)。
为了复杂性理论,该算法的运行时间为O(k)
,其中k
代表循环执行的次数。并且很好地假设它是无限的。