时间复杂度将两个O(n ^ 2)算法花费相同的时间量?

时间:2016-10-20 04:43:43

标签: algorithm data-structures time-complexity big-o

我无法完全理解这个问题:

对于给定的n值,两个O(n 2 )算法总是花费相同的时间。对或错?解释

我认为答案是错误的,因为根据我的理解,我认为渐近时间复杂度只测量在O(n 2 )时运行的两个算法,但是一个算法可能需要更长时间也许它可能有额外的O(n)组件到算法。像O(n 2 )vs(O(n 2 )+ O(n))。

我不确定我的逻辑是否正确。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

是的,你是对的。大哦符号描绘了时间复杂性的上限。可能会添加一些额外的常量字词c或更短的n字词,例如O(n),因为时间复杂度不会被考虑。

此外,

for i = 0 to n
    for j = 0 to n
        // some constant time operation
    end
end   

for i = 0 to n
    for j = i to n
        // some constant time operation
    end
end   

这两个都是O(n^2)渐近但不会花费相同的时间。

大哦分析的概念不是计算程序执行所需的精确时间,而不是计算循环迭代的次数。而是用n表示算法的增长率

答案 1 :(得分:3)

答案是正确的,但缺乏解释。

首先,大O符号允许任意常数因子。所以n 2 和100 * n 2 都在O(n 2 ),但显然第二个总是更大。

另一个原因是符号只给出一个上限,所以即使n的运行时间在O(n 2 )中,所以其中一个算法实际上可能是线性的。

相关问题