¿Cuál es el menor número de operaciones necesarias para ordenar una matriz de n objetos arbitrarios?

¿Quieres operaciones exactas o complejidad asintótica?

Para operaciones exactas, tendríamos que observar implementaciones específicas de los diferentes algoritmos de clasificación y comparar el número de intercambios y comparaciones entre objetos. Es por eso que la mayoría de las personas fuera de la academia no se molestan con eso, y solo miran la complejidad asintótica.

En términos de complejidad, es probable que necesite un algoritmo de clasificación que no dependa de elementos. Eso significa algo así como heapsort, mergesort o quicksort. Todos estos son [math] \ Theta (nlogn) [/ math]

Si sabe que solo está ordenando números, puede usar cosas como la Clasificación de cubos que le dará complejidades [matemáticas] \ Theta (n) [/ matemáticas]. Es imposible hacerlo mejor que eso, ya que al menos debes mirar cada elemento una vez.

Fuente: Big-O Algorithm Complexity Cheat Sheet

Si los objetos son arbitrarios, las comparaciones son la única herramienta disponible para determinar el orden. En el peor de los casos, cualquier algoritmo requiere al menos [math] \ lceil \ log_2 (n!) \ Rceil [/ math] operaciones de comparación para distinguir entre [math] n! [/ Math] diferentes ordenamientos de [math] n [ / matemáticas] objetos distintos.

En el mejor de los casos, un algoritmo requerirá al menos [math] n-1 [/ math] comparaciones para determinar que una lista ya está ordenada.

Si [math] n [/ math] es una potencia de [math] 2 [/ math], digamos [math] n = 2 ^ m [/ math], entonces un tipo de fusión pura requiere precisamente [math] n (m-1 ) +1 [/ matemáticas] operaciones de comparación (peor caso).

No sé si este es el mínimo posible para el peor de los casos, pero ciertamente es extremadamente cercano debido a argumentos teóricos de información.

More Interesting

¿Cuáles son algunos de los algoritmos / estructuras de datos que son útiles en la vida real?

¿Qué algoritmos de aprendizaje funcionan basados ​​en datos desequilibrados (eventos raros)?

Encuentre la suma máxima del subconjunto de longitud k de un conjunto dado, de modo que la suma sea estrictamente menor que M

Algoritmo: ¿Cómo debo comenzar el estudio de algoritmos?

¿Deben las clases de algoritmos incluir tareas de programación?

¿El uso de algoritmos en una clave de contraseña típica de 256 bits que siempre está cambiando pero que aún se muestra al usuario (como en un teléfono, por ejemplo) para crear código requeriría supercomputadoras más rápidas disponibles para superarlo?

¿Cuáles son las partes fáciles de la informática y cuáles son las partes difíciles?

Cómo calcular la complejidad del algoritmo de ordenamiento por selección

¿Cuál es el algoritmo de clasificación menos eficiente?

¿Qué algoritmo se pregunta en la entrevista de Google?

¿Es necesario codificar todos los datos en estructuras como pilas en C ++, o es un conocimiento práctico suficiente para aclarar entrevistas?

Cómo encontrar el enésimo número faltante más pequeño de una matriz de números

¿Qué algoritmos gráficos debe implementar un estudiante de segundo año de CS?

¿Puede un algoritmo descubrir macronutrientes a partir de una imagen?

Un k-palíndromo es una cadena que se transforma en un palíndromo al eliminar como máximo k caracteres de él. Dada una cadena S y un número entero K, ¿encuentra si S es un k-palíndromo o no? Restricciones: S tiene como máximo 20,000 caracteres y 0 <= k <= 30