IComparer中.net使用哪种排序算法

时间:2008-10-15 13:58:21

标签: .net algorithm sorting

当我们在班级中实施IComparer时,是否有人知道.net使用了哪种排序算法?

3 个答案:

答案 0 :(得分:10)

QuickSort似乎就是这样。

IComparer上的文档说

  

此界面与Array.SortArray.BinarySearch方法结合使用。

Array.Sort文档说

  

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

答案 1 :(得分:3)

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

答案 2 :(得分:2)

current documentation表示它使用了一种 Introsort ,一种混合​​排序算法:

是这样的:

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

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

  3. 否则,它使用 Quicksort 算法。

    source here