我知道List<T>.Sort
和Enumerable.OrderBy
排序算法有区别。后者是稳定,这意味着元素是相等的,它保留了它们的原始顺序。列表<T> .Sort和OrderBy的结果有什么不同?
这一切都很好地重复了定义,但要教这个,我想演示一个简单的示例,其中结果的算法不同。
我发现来到了这个例子“鉴于从最早的七个兄弟姐妹韦斯莱到最小,按名称排序长度他们”。
var weasleys = new List<string>{"Bill", "Charlie", "Percy", "Fred", "George", "Ron", "Ginny"};
在这种情况下,排序依据
weasleys.OrderBy(x => x.Length)
可以得到:罗恩,比尔,弗雷德,珀西,金妮,乔治,查理。请注意,'比尔'和'弗雷德'的长度相同,但比尔比较老,所以比尔最先。
而List.Sort
weasleys.Sort((x, y) => x.Length.CompareTo(y.Length));
可以得到:罗恩,弗雷德,比尔,金妮,珀西,乔治,查理。
我的例子有七个项目。有一个更简单的情况下有更少的项目? 算法给出不同结果的最小列表是什么?
看看这个答案,HTTP://计算器。COM /问题/ 1832684/C锋利排序和排序依据对比 – ZaoTaoBao
你的实施例具有设置的一条线,这两种情况下之间共享,并且对于每种情况一行。你可能希望多少少? –
万一别人猜错了,请详细说明你到底没有在这个例子中明白了,你想怎么有“较少的项目”。我如不猜。 – quetzalcoatl