【问题标题】:Which sorting algorithm is used by .net in IComparer.net 在 IComparer 中使用哪种排序算法
【发布时间】:2010-09-17 07:35:13
【问题描述】:

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

【问题讨论】:

标签: .net algorithm sorting


【解决方案1】:

QuickSort好像是它。

IComparer 上的文档说

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

Array.Sort 文档说

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

【讨论】:

    【解决方案2】:

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

    是这样的:

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

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

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

      source here

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2010-12-23
        • 1970-01-01
        • 2011-11-14
        • 1970-01-01
        • 1970-01-01
        • 2010-10-25
        • 2011-11-02
        • 2013-08-28
        • 1970-01-01
        相关资源
        最近更新 更多