Ejer3b - P2023 1S

Ejer3b - P2023 1S

de Zoé Castro Brando -
Número de respuestas: 1
Buenas, me puse a reflexionar sobre el uso dinámico que le damos a los array, siendo esta memoria estática. Ahora que ya vimos listas, ¿no es ineficiente trabajar con arreglos estáticos cuando se sabe que se van a estar modificando los arreglos? Como que en estos casos estamos borrando elementos del arreglo pero no estamos liberando su memoria, entonces sería un uso ineficiente del recurso. Entiendo que tampoco gastas memoria porque ya es fijada desde un principio. Pero en este punto,  me pregunto: ¿operativamente no es correcto o no tiene mucho sentido el uso de memorias estáticas cuando sabemos que vamos a hacer una modificación no? Ahora que incorporé el concepto de listas me hizo ruido estar trabajando con los arrays de esta manera.
En respuesta a Zoé Castro Brando

Re: Ejer3b - P2023 1S

de Felipe Miranda Torres De La Llosa -
Hola Zoé, como andas?

Está muy buena la pregunta, esto es una discusión que se va a ver más en profundidad en otros cursos, pero te dejo alguna idea para pensar.
Como decís, a nivel puramente de uso eficiente de la memoria parecería más conveniente trabajar directamente con listas, pero al momento de decidir que estructura de datos usar para modelar cierta realidad pueden entrar otras variables. Por ejemplo, acceder a una posición x de un arreglo requiere de una única instrucción (miArreglo[x]), en cambio, para hacer lo mismo en una lista (de la forma en la que están definidas en el curso) requiere recorrer la lista desde el primer elemento hasta el que es encuentra en la posición x, lo que implica ejecutar x instrucciones, donde x podría ser un número grande.
Otro ejemplo, si tenemos la restricción de que cierta colección de datos no puede exceder los MAX elementos, en un arreglo solo haría falta definir el sub rango de índices para que esta condición se cumpla, ahora ¿cómo puedo controlar esto en una lista? Sin duda puede ser un poco más costoso.

Saludos,
Felipe