代码之家  ›  专栏  ›  技术社区  ›  Manoj Talreja

.NET的array.sort()方法使用哪种排序算法?

  •  13
  • Manoj Talreja  · 技术社区  · 15 年前

    .NET使用哪种排序算法 Array.Sort() 方法?

    5 回复  |  直到 8 年前
        1
  •  4
  •   Christian C. Salvadó    15 年前

    它使用 QuickSort 算法。

    来源:

        2
  •  16
  •   Mike Chamberlain    8 年前

    Array.Sort() 根据输入的大小,选择三种排序算法之一:

    1. 如果大小小于16个元素,则使用插入排序算法。
    2. 如果尺寸超过 2 * log^N 在哪里 N 是输入数组的范围,它使用堆排序算法。
    3. 否则,它使用快速排序算法

    来源: Array.Sort(Array) Method on MSDN .

        3
  •  1
  •   user492238    12 年前

    如前所述快速排序。但对于所有的数据来说,情况并不一样好!

    通过使用reflector:它在本机dll中进行排序--对于最常见的一维数组,按升序排序。但是,其他情况是在托管代码中进行排序的——应用的优化很少。因此,它们的速度通常要慢得多。

        4
  •  1
  •   Stanimir Yakimov    9 年前

    事实上,这并不像看上去那么容易。看起来.NET正在根据输入和大小实现一组不同的排序算法。我以前经常分解 Array.Sort() 在clr中,它们似乎同时使用了堆、插入和快速排序。 enter image description here

        5
  •  -1
  •   Graviton    15 年前