.NET 框架实现什么排序算法
本文关键字:排序 算法 什么 实现 框架 NET | 更新日期: 2023-09-27 17:55:51
在
.NET中实现IComparable之类的东西时,任何人都可以建议.NET使用什么排序算法来实际对基础数据进行排序?此外,使用的算法是可自定义的还是可选择的?
有两大问题。
Array.Sort
(就地对数组进行排序)使用不稳定的快速排序。
根据 MSDN 文档,这与 List<T>.Sort
内部使用的实现相同:
此方法使用
Array.Sort
,其中 使用快速排序算法。
Enumerable.OrderBy<TSource, TKey>
方法(对输入序列的副本进行排序)使用稳定的快速排序。
据我所知,这是 .NET BCL 中仅有的两个排序实现。
MSDN 文档指出,使用的排序算法是快速排序(至少对于数组) - 这是不可选择或自定义的。
请注意,它不是指定使用哪种排序方法的IComparable
接口,而是指向执行排序的方法或类(通常是数组或列表,但它可以是任何方法),例如,数组和 List 完全可以使用完全不同的算法进行排序(尽管实际上两者都使用 Quicksort)
这意味着,如果您真的愿意,可以使用替代算法实现自己的排序方法。