首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

LINQ排序是如何实现的

2013-09-06 
LINQ排序是怎么实现的?不是说是快速排序么?但是我实测它是稳定的,这是怎么回事?[解决办法]在linq to objec

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

热点排行