2009-12-06 40 views

Respuesta

4

Utiliza el algoritmo QuickSort.

Fuente:

+0

Pregunta: a menos que el OP haya preguntado específicamente sobre .NET 1.1, ¿por qué darle un enlace a la documentación de .NET 1.1? –

+0

@John: Gracias, no lo noté, enlace fijo ... – CMS

+0

.Net framework usa Introsort en lugar de simple ordenación rápida desde la versión 4.5. http://en.wikipedia.org/wiki/Introsort – gordanvij

1

ordenamiento rápido como se ha mencionado. ¡Pero no sirve para todos los datos!

Al usar reflector: ordena en un dll nativo -> para el caso más común de matrices 1D, en orden ascendente. Sin embargo, otros casos se clasifican en código administrado, con muy pocas optimizaciones aplicadas. Por lo tanto, su velocidad suele ser mucho más lenta.

1

En realidad, no es tan fácil como parece. Parece que .NET está implementando un conjunto de algoritmos de clasificación diferentes según la entrada y su tamaño. Solía ​​descompilar Array.Sort() de CLR y parece que están usando Heap, Insertion y Quicksort. enter image description here

+0

... ya que está claramente documentada aquí https://msdn.microsoft.com/en-us/library /6tf1f0bc.aspx –

12

Array.Sort() elige uno de los tres algoritmo de clasificación, en función del tamaño de la entrada:

  1. Si el tamaño es menos de 16 elementos, se utiliza un algoritmo de ordenación por inserción.
  2. Si el tamaño excede 2 * log^N, donde N es el rango de la matriz de entrada, utiliza un algoritmo de ordenación de pila.
  3. De lo contrario, se utiliza un algoritmo de ordenación rápida

Fuente: Array.Sort(Array) Method on MSDN.

+1

Debe volver a leer ese tema. En particular, su artículo n. ° 2 es incorrecto. No basa esa decisión en el tamaño de la entrada, sino más bien en el * número de particiones. * 'Array.Sort' implementa Introsort, que está diseñado para usar Quicksort en la mayoría de los casos (con la optimización añadida de usar el tipo de inserción) para particiones pequeñas), pero si detecta que el orden del artículo resulta en un caso patológico para Quicksort, cambia a Heapsort. –

Cuestiones relacionadas