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:
- Cómo maximizar el XOR entre un número constante y múltiples matrices con un solo trie si los elementos de la matriz pueden ser comunes
- ¿Cuál es la mejor estructura de datos para un juego de ajedrez?
- ¿Cómo funciona el algoritmo de adsorción?
- ¿Cuáles son algunos patrones de diseño de C ++ para aplicaciones en tiempo real como el comercio algorítmico?
- ¿Cuál es el enfoque algorítmico para encontrar el primer entero positivo que falta si se proporciona una matriz entera sin clasificar en O (n) complejidad de tiempo y espacio constante?
[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].