小编tun*_*luk的帖子

Linq OrderBy().ThenBy()方法序列的时间复杂度是多少?

我在我的项目中使用Linq和Lambda Operations,我需要根据类的两个属性对List进行排序.因此,我使用了OrderBy().ThenBy()方法如下:

class ValueWithIndex{
    public long Value;
    public int Index;
}
...

List<ValueWithIndex> valuesWithIndex = new List<ValueWithIndex>();

for (int i = 0; i < A.Length; i++){
    ValueWithIndex vi = new ValueWithIndex();
    vi.Value = A[i];
    vi.Index = i;
    valuesWithIndex.Add(vi);
}
var orderedValues = valuesWithIndex.OrderBy(v => v.Value).ThenBy(v => v.Index);

...
Run Code Online (Sandbox Code Playgroud)

这个答案中,我们解释说,OrderBy()使用Quicksort,因此即使它具有O(N*logN)平均时间复杂度,对于最坏的情况,时间复杂度约为O(N 2).如果ThenBy()方法的时间复杂度最差为O(N 2),那么使用这些方法毫无意义.

ThenBy()方法也使用Quicksort吗?如果是,那是否意味着对于相同的"v.Value","v.Index"会被排序为O(N 2)最差的时间复杂度?

c# linq big-o lambda

16
推荐指数
1
解决办法
4211
查看次数

标签 统计

big-o ×1

c# ×1

lambda ×1

linq ×1