Algoritmos: ¿Cómo la combinación de ordenamiento tiene complejidad espacial O (n) para el peor de los casos?

Mergesort, si se implementa para crear matrices en las llamadas recursivas, creará muchas de ellas, pero no coexistirán al mismo tiempo. En cada llamada recursiva, crea una matriz (o 2 dependiendo de una implementación) para fusionar y no ocupan más que O (n) espacio, y luego, cuando se realiza la fusión, estas matrices se eliminan y se crearán algunas nuevas después de un momento en alguna otra llamada recursiva. Si contó cuánto espacio ocuparon todos los arreglos que alguna vez se crearon, sería O (n log n), pero no necesita preocuparse por esta información; no necesita más que O (n) espacio, porque cuando necesita crear una matriz, todos los demás ya no existen y no ocupan memoria. Tenga en cuenta que simplemente puede declarar 2 o 3 matrices al principio, cada una de la longitud de n, y luego almacenar la secuencia en una de ellas, mientras usa la otra para fusionar, mejorará el rendimiento y le mostrará más allá dudo que no haya necesidad de más de O (n) de memoria.

En la ordenación por fusión cuando estamos fusionando la matriz ordenada 2 creamos 2 matrices temporales. L [] = Arr [izquierda, mitad] (matriz izquierda) para almacenar temporalmente la matriz anterior de izquierda a mitad (mitad izquierda ordenada) y R [] = Arr [media + 1, derecha] (matriz derecha) para almacenar temporalmente matriz anterior de medio + 1 a la derecha (ordenada a la mitad derecha), luego fusionamos las dos matrices temporales en la original.
El hecho de que creamos 2 matrices temporales para almacenar los números de la matriz original, ya que la matriz original tiene n elementos, las matrices temporales son de tamaño n respectivamente y, por lo tanto, el espacio extra de ny una complejidad de espacio O (n).
El espacio original de la matriz no se tiene en cuenta al calcular la complejidad del espacio de un algoritmo de clasificación.

More Interesting

¿Cuáles son las ventajas y desventajas de comparar la búsqueda de árboles de Monte Carlo y la programación dinámica aproximada?

¿Qué algoritmos de Machine Learning pueden usarse para el aprendizaje supervisado incremental?

¿Cuál es la diferencia entre un tipo estable e inestable?

¿Es posible resolver un problema de cambio de monedas para algunos elementos cíclicos a través de la programación dinámica si no se permite el uso de monedas adyacentes?

¿Qué algoritmos son más importantes para un concursante de ACM ICPC?

¿Qué técnica general siguen los autores al escribir libros técnicos en LaTeX?

Como senior que busca postularse a empresas como Google, Palantir, etc., ¿cómo puedo mejorar mis estructuras de datos avanzadas, algoritmos y cursos de bioinformática y tener más confianza en mí mismo al ingresar a un aula y no pensar automáticamente que soy estúpido? ?

Cómo encontrar la subcadena común más larga de tres o más cadenas usando una matriz de sufijos

¿Cuáles son las diferencias entre los algoritmos que realizan la búsqueda en un gráfico y los algoritmos que realizan la búsqueda en un árbol?

¿Existe algún algoritmo o método para identificar patrones en una secuencia de filas / eventos?

¿Deep Blue fue un algoritmo o una IA o ambos?

¿Cómo se realiza la coincidencia de cadenas en SQL?

¿Qué algoritmo se puede usar para encontrar la clave para el cifrado y la clave de entrada en el formulario?

¿Qué es la búsqueda de fuerza bruta?

¿Cuáles son algunas características de los datos de imágenes faciales que se pueden utilizar para alimentar los algoritmos de aprendizaje automático?