¿Por qué la complejidad espacial de quicksort es “log n”?

La ordenación rápida es un algoritmo de ordenación in situ, por lo que no se utiliza espacio adicional para duplicados de la matriz. Esto significa que la complejidad del espacio debe provenir de otro factor, que imagino es de dónde viene esta pregunta.

La fuente misteriosa de la falta de complejidad [matemática] O (\ log n) [/ matemática] es la pila de llamadas. Quicksort es un algoritmo de divide y vencerás que se divide alrededor de un pivote, alcanzando en promedio su caso base después de las divisiones [math] O (\ log n) [/ math]. Cada llamada recursiva en el algoritmo Quicksort es una llamada a la misma función, que ocupa una cantidad constante ([matemática] O (1) [/ matemática]) de espacio para su marco en la pila de llamadas (ver Pila de llamadas – Wikipedia) .

En promedio, cada llamada recursiva de Quicksort es de tamaño [matemática] n / 2 [/ matemática], donde [matemática] n [/ matemática] es el tamaño de la llamada anterior (y hay dos de esas llamadas). Cada llamada a Quicksort tiene complejidad de espacio [matemática] O (1) [/ matemática] como se indicó anteriormente. Entonces, tenemos la siguiente recurrencia para la complejidad espacial de Quicksort:

[matemática] S (n) = 2S (\ frac {n} {2}) + O (1) [/ matemática]

Podemos usar el Teorema maestro, que nos permite concluir que, para una recurrencia de la forma anterior, la complejidad del espacio se reduce a [matemáticas] O (log n) [/ matemáticas].

More Interesting

¿Por qué son necesarios los algoritmos?

¿Cómo afecta el subprocesamiento múltiple al rendimiento de diferentes algoritmos de clasificación?

¿En qué situación no debemos usar la tabla Hash?

¿Qué algoritmo es mejor para datos no estructurados?

Según usted, ¿cuáles son los algoritmos de aprendizaje automático más importantes en la actualidad?

¿La programación se trata de definiciones de variables, para bucles, ifs y estructuras de datos?

Actualmente estoy en USACO Gold, pero apenas puedo resolver nada. ¿Qué debo hacer para ser más competente? ¿Dominar el oro es solo una cuestión de aprender toneladas de algoritmos, o necesita más que eso?

¿Qué es lo más profundo que aprendiste al leer SICP?

¿Desde dónde puedo aprender algoritmos practicando problemas?

¿Cuántas comparaciones se requieren para fusionar 4 archivos ordenados de 35 registros en un solo archivo ordenado?

¿Cuáles son las características de un algoritmo codicioso?

¿Qué es la recursividad? ¿Puedes explicar los principios fundamentales de las recursiones? ¿Puedes hacer el código / algoritmo de la serie Fibonacci usando recursividad?

Interacción humano-computadora: ¿Qué tan difícil sería escribir un algoritmo que pudiera identificar similitudes en las expresiones faciales entre dos imágenes tomadas en la cabeza?

¿Por qué las funciones recursivas son tan difíciles de entender?

¿Qué algoritmo debe usar Quora para ordenar las preguntas en las páginas de sesión?