C#Linq选择了许多复杂度
Linq的复杂度是多少 我正在寻找预测运行时效率的方法 我查阅了微软文档和其他一些资料来源 在复杂度方面,我认为O(N^2)是没有意义的,因为可能会更有效地尝试将N个内存块复制到一个新连接的内存块 我预测其复杂性为O(N) 你能给我指出SelectMany的complexityclass被明确命名的参考文献吗,或者给我一些提示为什么复杂性是O(N^2) 感谢您的帮助,饼干是最好的答案。C#Linq选择了许多复杂度,c#,linq,code-complexity,C#,Linq,Code Complexity,Linq的复杂度是多少 我正在寻找预测运行时效率的方法 我查阅了微软文档和其他一些资料来源 在复杂度方面,我认为O(N^2)是没有意义的,因为可能会更有效地尝试将N个内存块复制到一个新连接的内存块 我预测其复杂性为O(N) 你能给我指出SelectMany的complexityclass被明确命名的参考文献吗,或者给我一些提示为什么复杂性是O(N^2) 感谢您的帮助,饼干是最好的答案。 谢谢它在一系列集合上运行。这怎么不是O(n²)?这在某种程度上取决于n是什么,因为您所说的序列包含子序列,其中
谢谢它在一系列集合上运行。这怎么不是O(n²)?这在某种程度上取决于
n
是什么,因为您所说的序列包含子序列,其中每个子序列可能具有不同的长度。我天真地说它是O(n+∑m)ₜ)
,其中n
是顶级序列的长度,是∑mₜ
是子序列长度的总和。如果每个子序列也有长度n
,那么这就变成O(n+n²)=O(n²)
,我会假设,“如果每个子序列也有长度n
”,但是它们是相关的吗?它不是更接近O(m*n)
其中m=n
可能是真的,但不一定是真的。@Caramiriel每个子序列可能确实有完全不同的长度,这是我在评论的第一部分中讨论过的。我试图解释OP在哪里可能遇到O(n²)
。如果每个子序列都有长度m
,那么是的,∑mₜ
是n*m
,所以我想它是O(n+n*m)=O(n*m)
?