¿Existe un algoritmo para determinar el algoritmo óptimo para ordenar un conjunto de datos en particular?

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.

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.

More Interesting

¿Cuál es el problema con mi código de C ++ para SPOJ.com - Problema PALIN?

Imprimí un libro electrónico con 600 páginas. El montón se cayó y ahora tengo que organizarlas en el orden de los números de página. ¿Cuál es la mejor manera de hacerlo?

¿Qué algoritmos de minería de datos puedo usar para maximizar las ganancias de una compañía de tarjetas de regalo que almacena ventas, pedidos y datos de clientes en una base de datos relacional?

Yoshua Bengio: ¿Puede el aprendizaje profundo encontrar un nuevo algoritmo de clasificación?

¿Existe un curso en línea para algoritmos y estructuras de datos que no requiera matemática discreta como requisito previo?

¿Cuáles son los trabajos orientados a la lógica pura para los programadores?

El tiempo supuestamente imaginario puede modelarse significativamente en física. Entonces, ¿puede existir una complejidad de tiempo imaginaria para un algoritmo?

Cómo usar un video como entrada en un algoritmo de aprendizaje automático

Cómo mostrar el límite de (1 + a_n / n) ^ n = e ^ a si el límite de a_n = a cuando n se aproxima al infinito

Informática: ¿Por qué la recursión es más elegante que la iteración?

¿Cuáles son los mejores algoritmos de Real Space Renormalization Group?

¿Puede Quantum Computing acelerar las redes neuronales y los algoritmos genéticos?

¿Cómo analizar la complejidad de caso promedio de un algoritmo? ¿Hay alguna fuente para aprenderlo paso a paso de lo básico?

¿La comprensión humana sigue un algoritmo de compresión de datos?

¿Qué son las estructuras de datos y los algoritmos en c ++?