En primer lugar, una definición, ya que es bastante importante: una clasificación estable es una que garantiza que no se volverá a ordenar elementos con claves idénticas.
recomendaciones:
ordenar rápida: Cuando no se necesita una especie estable y un rendimiento promedio caso importa más que peor desempeño caso. Una clasificación rápida es O (N log N) en promedio, O (N^2) en el peor de los casos. Una buena implementación utiliza el almacenamiento auxiliar O (log N) en forma de espacio de pila para la recursión.
Combinar tipo: Cuando necesite un tipo estable, O (N log N), esta es su única opción. Las únicas desventajas son que usa O (N) espacio auxiliar y tiene una constante ligeramente mayor que una clasificación rápida. Hay algunos géneros de fusión en el lugar, pero AFAIK no son estables o son peores que O (N log N). Incluso los géneros O (N log N) en el lugar tienen una constante mucho más grande que el tipo de fusión simple que son más curiosidades teóricas que algoritmos útiles.
Tipo de montículo: Cuando no necesita un tipo estable y se preocupa más por el peor de los casos, el rendimiento medio de la carcasa. Está garantizado que es O (N log N) y utiliza O (1) espacio auxiliar, lo que significa que no se agotará inesperadamente ni acumulará espacio en entradas muy grandes.
Introsort: Este es un tipo rápido que cambia a una ordenación de montón después de una cierta profundidad de recursión para evitar el peor caso de O (N^2) de ordenación rápida. Casi siempre es mejor que una ordenación simple y rápida, ya que obtiene el caso promedio de una clasificación rápida, con un rendimiento garantizado de O (N log N). Probablemente la única razón para usar una ordenación de montón en lugar de esto es en sistemas con mucha memoria limitada donde el espacio de pila O (log N) es prácticamente significativo.
Tipo de inserción: Cuando N se garantiza que es pequeño, incluso como el caso base de un tipo de ordenación rápida o combinación. Si bien es O (N^2), tiene una constante muy pequeña y es un tipo estable.
Tipo de burbuja, selección tipo: cuando está haciendo algo rápido y sucio y por alguna razón no puede usar el algoritmo de clasificación de la biblioteca estándar. La única ventaja que tienen sobre el tipo de inserción es que es un poco más fácil de implementar.
tipo no de comparación: En algunas condiciones bastante limitado Es posible romper el O (N log N) de barrera y especie en O (N). Aquí hay algunos casos en los que vale la pena intentarlo:
Clasificación de conteo: Al ordenar enteros con un rango limitado.
Ordenamiento de radios: Cuando log (N) es significativamente mayor que K, donde K es el número de radix dígitos.
Clasificación de cubo: Cuando puede garantizar que su entrada se distribuye de manera aproximadamente uniforme.
Una guía como http://bigocheatsheet.com/ para este material sería greaaaat –