.NET 框架实现什么排序算法

本文关键字:排序 算法 什么 实现 框架 NET | 更新日期: 2023-09-27 17:55:51

.NET中实现IComparable之类的东西时,任何人都可以建议.NET使用什么排序算法来实际对基础数据进行排序?此外,使用的算法是可自定义的还是可选择的?

.NET 框架实现什么排序算法

有两大问题。

Array.Sort(就地对数组进行排序)使用不稳定的快速排序

根据 MSDN 文档,这与 List<T>.Sort 内部使用的实现相同:

此方法使用 Array.Sort ,其中 使用快速排序算法。

Enumerable.OrderBy<TSource, TKey>方法(对输入序列的副本进行排序)使用稳定的快速排序

据我所知,这是 .NET BCL 中仅有的两个排序实现。

MSDN 文档指出,使用的排序算法是快速排序(至少对于数组) - 这是不可选择或自定义的。

请注意,它不是指定使用哪种排序方法的IComparable接口,而是指向执行排序的方法或类(通常是数组或列表,但它可以是任何方法),例如,数组和 List 完全可以使用完全不同的算法进行排序(尽管实际上两者都使用 Quicksort)

这意味着,如果您真的愿意,可以使用替代算法实现自己的排序方法。