Complejidad de memoria de variables temporales #131
-
Si uso una variable temp para poder intercambiar 2 punteros, y esto se hace varias veces en la misma función (dentro de un for o un while), ¿esto le da complejidad espacial O(1) (por ser temporal), mayor a O(1) (por hacerse varias veces, en cuyo caso, puede reducirse con free en cada iteración?), o ni siquiera ocupa espacio adicional (porque hago temp = p1; p1 = p2; p2 = temp;, no se crea un puntero nuevo) ? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 2 replies
-
Hola @martina-abello. En ese caso, la complejidad espacial es O(1), porque lo que importa es el máximo de memoria usada simultáneamente, no la suma de lo que se usa en cada iteración. |
Beta Was this translation helpful? Give feedback.
-
Pero puedo usar una variable auxiliar pidiendo calloc, tipo un mini array y lo voy liberando? |
Beta Was this translation helpful? Give feedback.
Hola @martina-abello. En ese caso, la complejidad espacial es O(1), porque lo que importa es el máximo de memoria usada simultáneamente, no la suma de lo que se usa en cada iteración.
Si usaras malloc o calloc sin hacer free de inmediato, entonces sí irías acumulando memoria, ya que estarías reservando más en cada iteración.
Pero si solo usas una variable temporal dentro de un bloque o función, esa memoria se libera automáticamente al salir del scope, así que no afecta la complejidad espacial de forma acumulativa.