读书人

LINQ排序是如何实现的

发布时间: 2013-09-06 10:17:17 作者: rapoo

LINQ排序是怎么实现的?
不是说是快速排序么?但是我实测它是稳定的,这是怎么回事?
[解决办法]
在linq to object中用的是稳定快速排序法,其他linq有各自不同实现方法。
可以看源码就知道了。
http://dotnetinside.com/framework/v4.0.30319/System.Core/EnumerableSorter%601
[解决办法]
的确是快速排序,但是只要记录下排序前的元素顺序,很容易将非稳定排序改造成稳定排序。

换言之,非稳定排序都是可以转换成稳定排序的,只要增加一个原始位置记录,避免元素相等即可。
[解决办法]
LINQ排序的实现关键还是在于EnumerableSorter<TElement>

具体你可以参考老赵的这篇文章http://www.cnblogs.com/JeffreyZhao/archive/2010/01/27/sort-array-linq-3-linq-sort.html

读书人网 >C#

热点推荐