【发布时间】:2010-09-13 17:22:18
【问题描述】:
不仅仅是关于 LINQ to [在此处插入您最喜欢的提供程序],这个问题是关于搜索或过滤内存中的集合。
我知道 LINQ(或搜索/过滤扩展方法)适用于实现 IEnumerable 或 IEnumerable<T> 的对象。问题是:由于枚举的性质,每个查询的复杂度是否至少 O(n)?
例如:
var result = list.FirstOrDefault(o => o.something > n);
在这种情况下,每个算法将至少花费 O(n),除非 list 相对于 'something' 排序,在这种情况下,搜索应该花费 O(log (n)):应该是二分查找。但是,如果我理解正确的话,这个查询将通过枚举来解决,所以它应该需要 O(n),即使在 list 之前已订购。
- 有什么办法可以解决 O(log(n)) 中的查询吗?
- 如果我想要性能,我应该使用 Array.Sort 和 Array.BinarySearch 吗?
【问题讨论】:
标签: c# linq performance complexity-theory