No sé si hay un algoritmo per se, pero hay muchas reglas generales. Y las personas inventan sus propios algoritmos para acelerar las cosas.
Por ejemplo, la documentación para el método C # List .Sort en MSDN dice lo siguiente sobre el algoritmo de clasificación que selecciona.
- Si el tamaño de la partición es inferior a 16 elementos, utiliza un algoritmo de clasificación de inserción.
- Si el número de particiones excede 2 * LogN, donde N es el rango de la matriz de entrada, utiliza un algoritmo Heapsort.
- De lo contrario, utiliza un algoritmo Quicksort.
Sería bueno si mencionaran cómo están particionando.
- ¿Cuál es tu algoritmo favorito y dónde lo has usado prácticamente en la vida real?
- ¿Qué algoritmo puedo usar para hacer que una imagen se vea más caricaturesca?
- ¿O (log n) siempre implica base 2?
- Una función de densidad de probabilidad, f, no es cero cuando a <x 0. ¿Cuáles son las restricciones en a, by k?
- Cómo construir un secuenciador de ADN
Sin embargo, la mayoría de las reglas generales que he visto tienden a girar en torno al número de elementos en la colección, qué tan cerca están los elementos de estar ya ordenados y ciertas consistencias en los datos en sí.
Ese último es de una memoria débil en una de mis clases de algoritmos. Bajo ciertas condiciones, es posible obtener un tiempo de ejecución promedio alrededor de O (n), pero los datos tienen que comportarse bien. Eso es literalmente todo lo que recuerdo sobre el algoritmo de clasificación de tiempo de ejecución O (n); Tenía mucho material que aprender en ese momento y las condiciones para el algoritmo hacían que no pareciera tan útil para un estudiante en un entorno académico.