这个算法在技术上是O(1)时间吗?

时间:2014-08-05 16:04:23

标签: algorithm complexity-theory

O(1)表示"常数时间",这个最大算法在技术上是O(1)时间吗?

int max (int x, int y)
{
    for (int k = 0; k < 100000000000000000000000000; ++k); // useless for-loop
    return (x > y ? x : y);
}

1 个答案:

答案 0 :(得分:0)

是的,它是恒定的时间。

我理解你的担忧:恒定时间并不一定意味着它很快,正如你的设计示例所示(尽管用户104对于编译器没有为循环生成任何代码是正确的)。但通常情况下,大O符号告诉我们所有我们需要知道的东西。它的计算相对容易。

结论:大O符号都是关于渐近线的。如果Big O表示法似乎不符合您的直觉,那么请再次检查您的分析或检查您的直觉。重复至少三次。如果它仍然失败,那么与你的教授讨论。只有这样,如果你的教授这么说,你应该做一个比大O更深入的分析(这将是困难的)。