我正在尝试其中一个在线开发者认证网站的演示测试。我使用许多接口,事件等在C#中编写它。
我的代码通过但它抱怨说:
检测到的时间复杂度:O((N + M)* K)
基本上O((N + M)* K)是什么意思?
如果我想修复这种复杂性,(这是一个代码适用于数组)通常哪里最好开始检查?
更新:代码适用于多维数组,它在循环中有一个循环(在某些点遍历行然后是列)
答案 0 :(得分:0)
这完全取决于你的代码应该做什么。
Big-Oh告诉你决定你的算法需要多长时间的主要因素是什么。
答案 1 :(得分:0)
这是Big-O表示法的一个例子:
http://en.wikipedia.org/wiki/Big_O_notation
我不知道你所拥有的类型的具体细节,但它告诉你的是有问题的方法,但它告诉你的是方法的界限是它会运行多次( N + M)* k个。
如何得出这个结论是通过检查方法的内部循环与其在外循环中运行的次数之间的关系。
它认为'* k'是一个因素意味着它警告你,它可能需要长时间用于大型阵列。
你可以发布方法本身吗?