我正在做一些功课,所以我不能发布任何代码。我正在研究一些代码,此时我有类似的东西(而不是我编写时间复杂度的函数):
while(O(n^2)) {
O(n^4);
O(n^2);
}
我根据函数中的嵌套for循环估计了O.我的问题是这件事的实际时间复杂性是什么?我也不介意简短的解释。谢谢!
答案 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()