Al responder a this question, comenzó un debate sobre la complejidad de QuickSort. Lo que recuerdo de mi época universitaria es que QuickSort es O(n^2)
en el peor de los casos, O(n log(n))
en el caso promedio y O(n log(n))
(pero con un límite más estricto) en el mejor de los casos.Significado de la complejidad promedio cuando se utiliza la notación Big-O
Lo que necesito es una explicación matemática correcta del significado de average complexity
para explicar claramente de qué se trata a alguien que cree que la notación de grandes O solo se puede usar para el peor de los casos.
Lo que recuerdo si para definir la complejidad promedio debe considerar la complejidad del algoritmo para todas las entradas posibles, cuente cuántos casos degenerados y normales. Si la cantidad de casos degenerados divididos por n tiende a 0 cuando n crece, entonces puede hablarse de la complejidad promedio de la función general para los casos normales.
¿Es correcta esta definición o la definición de complejidad promedio es diferente? Y si es correcto, ¿alguien puede decirlo con más rigor que yo?
En cuanto al argumento, creo que si das notación de gran O para el tiempo de ejecución y no la calificas, entonces deberías hablar del peor de los casos, simplemente porque estás diciendo que el tiempo está limitado por una función con el gran O especificado. Si el tiempo está limitado, eso significa que el tiempo del peor de los casos está limitado, por definición de "límite". Si dices, "este es el caso promedio O (n log n)", entonces eso está bien definido y significa lo que dices en esta pregunta. –
Puede valer la pena intentar http://cstheory.stackexchange.com/ para la pregunta –
@Chris: aunque las preguntas frecuentes de ese sitio dicen que "los típicos problemas de tarea en los libros de texto" son demasiado básicos, y creo que esto es tan básico como ese. –