¿Podría alguien aconsejarle al implementar algo como IComparable en .NET qué algoritmo de ordenación usa .NET para ordenar realmente los datos subyacentes? También es el algoritmo utilizado personalizable o seleccionable?¿Qué algoritmo de clasificación implementa .NET Framework?
Respuesta
Hay dos biggies.
Array.Sort
(que ordena una matriz en el lugar) utiliza un unstableQuicksort.
Esta es la misma aplicación utilizado internamente por List<T>.Sort
, de acuerdo con la documentación de MSDN:
Este método utiliza
Array.Sort
, que utiliza el algoritmo QuickSort.
El Enumerable.OrderBy<TSource, TKey>
método (que ordena una copia de una secuencia de entrada) utiliza un estable Quicksort.
Hasta donde yo sé, estas son las dos únicas implementaciones de clasificación en .NET BCL.
El MSDN Documentation indica que el algoritmo de clasificación utilizado es Quicksort (al menos para matrices): no se puede seleccionar ni personalizar.
Tenga en cuenta que no es la interfaz IComparable
que especifica qué método de clasificación usar, se reduce al método o clase que está haciendo la clasificación (normalmente una matriz o lista, pero podría ser cualquier método), por ejemplo, es completamente posible para arrays y Lists para ordenar utilizando algoritmos completamente diferentes (aunque en realidad ambos usan Quicksort)
Esto significa que si realmente lo desea, puede implementar su propio método de clasificación utilizando un algoritmo alternativo.
- 1. ¿Qué algoritmo de clasificación utiliza el método Array.Sort() de .NET?
- 2. ¿Qué algoritmo (s) de clasificación utiliza MySQL?
- 3. ¿Qué algoritmo de clasificación usa PHP?
- 4. ¿Qué algoritmo de clasificación utiliza LINQ "OrderBy"?
- 5. Un algoritmo de clasificación
- 6. Algoritmo Problema Clasificación
- 7. ¿Qué es .NET Framework?
- 8. ¿El algoritmo de clasificación utilizado por el método `Array.Sort()` de .NET es un algoritmo estable?
- 9. ¿Qué algoritmo de clasificación está detrás de un NSSortDescriptor?
- 10. ¿Qué algoritmo usa el método de clasificación de Ruby?
- 11. ¿Qué algoritmo de clasificación de múltiples criterios usar?
- 12. Algoritmo de clasificación basado en comparación
- 13. .NET framework versions (o qué ejecuta qué?)
- 14. Algoritmo eficiente de clasificación de cadenas
- 15. Clasificación de Gridview con Entity Framework.
- 16. ¿Cuándo se usa cada algoritmo de clasificación?
- 17. Medición del rendimiento del algoritmo de clasificación
- 18. ¿Existe un algoritmo de "clasificación binaria"?
- 19. ¿Qué .NET framework con MVC 4?
- 20. ¿Qué es .Net Framework 4 extendido?
- 21. ¿En qué idioma está escrito .NET Framework?
- 22. ¿Cómo implementa la clasificación y paginación en datos distribuidos?
- 23. Elija el algoritmo de clasificación correcto. Lineal o no lineal?
- 24. ¿Cuáles son los criterios para elegir un algoritmo de clasificación?
- 25. ¿Patrones de diseño utilizados en .NET Framework?
- 26. C# sin .NET Framework
- 27. ¿Qué características NUEVAS tiene WCF en .NET Framework 4 frente a .NET Framework 3.5?
- 28. .NET framework version used
- 29. .net Compact Framework 4.0
- 30. ¿Cómo implementa .Net CLR una "Interfaz" internamente?
http://stackoverflow.com/questions/204805/which-sorting-algorithm-is-used-by-net-in-icomparer o http://stackoverflow.com/questions/1854604/which-sorting-algorithm -used-in-net-arrays-sort-method-array-sort Me sorprende que el cuadro de diálogo de la "nueva pregunta" no le mostrara preguntas similares cuando ingresó este. No me sorprende que alguien no haya buscado antes de preguntar. –
[Esto ha cambiado] (https://msdn.microsoft.com/en-us/library/6tf1f0bc (v = vs.100) .aspx) desde .NET 4.5: ahora ordenación de inserción para n <16; de lo contrario, comienza con Quicksort y cambia a Heapsort cuando el número de particiones (¿profundidad de recursión?) Excede 2 * Log^N. Llamado: [Introsort] (https://en.wikipedia.org/wiki/Introsort) – Laoujin