7

IComparer当我们在我们的类中实现时,有人知道.net 使用哪种排序算法吗?

4

3 回答 3

10

快速排序似乎是它。

IComparer上的文档说

此接口与Array.SortArray.BinarySearch方法结合使用。

Array.Sort文档

此方法使用快速排序算法。此实现执行不稳定的排序;也就是说,如果两个元素相等,则可能不会保留它们的顺序。相反,稳定排序保留了相等元素的顺序。

于 2008-10-15T14:00:40.810 回答
6

当前的文档说它使用了一种Introsort,一种混合​​排序算法:

是这样的:

  1. 如果分区大小少于 16 个元素,则使用 插入排序算法

  2. 如果分区数超过 2 * LogN,其中 N 是输入数组的范围,则使用Heapsort算法。

  3. 否则,它使用快速排序算法。

    来源这里

于 2017-11-08T08:29:35.607 回答
3

根据MSDN,.NET 使用 QuickSort。顺便说一句,该方法绝对不依赖于比较器(只要它是基于比较的),为什么.NET 应该根据您是否提供自定义比较器来使用不同的方法?

于 2008-10-15T14:00:35.647 回答