这段代码的时间复杂性

时间:2013-11-06 19:31:20

标签: performance time time-complexity

我正在做一些功课,所以我不能发布任何代码。我正在研究一些代码,此时我有类似的东西(而不是我编写时间复杂度的函数):

while(O(n^2)) {
    O(n^4);
    O(n^2);
}

我根据函数中的嵌套for循环估计了O.我的问题是这件事的实际时间复杂性是什么?我也不介意简短的解释。谢谢!

2 个答案:

答案 0 :(得分:2)

编辑: 我之前的回答是错误的,因为我犯了一个错误。

现在我明白了,您的代码可以重构为

while(run == true)
{
    run = O(n^2);
    O(n^4);
    O(n^2);
}

所以每次迭代都有O(n ^ 4)的复杂度,因为我们有一个多项式n ^ 4 + 2 *(n ^ 2),我们抛弃了较低的程度。现在你必须将它乘以迭代次数。例如,如果你得到n次迭代,你最终得到O(n ^ 5)。如果您总是有1000000000次迭代,那么您仍然有O(n ^ 4)。

Big-O表示法的一个很好的解释是:What is a plain English explanation of "Big O" notation?

答案 1 :(得分:1)

你有什么特别想要找到的?如果你想知道你的代码需要多长时间来计算,并将其分解为特定的循环和嵌套循环,那么我建议你查看秒表类:

http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch(v=vs.110).aspx

此外,您可以通过将秒表的经过时间写入标签,然后拨打me.update()

来观看实时使用时间