Skip to main content

Arreglos estáticos

Un arreglo estático (también llamado array de tamaño fijo) es una estructura de datos lineal que almacena una colección de elementos del mismo tipo en posiciones de memoria contiguas. Su tamaño se define en el momento de la creación y no puede cambiar durante la ejecución del programa.

¿Cómo se implementan en memoria?

El arreglo estático se almacena como un bloque continua de memoria, donde:

  • El primer elemento se guarda en una dirección base.
  • Los demás elementos se colocan en posiciones consecutivas, calculadas por desplazamiento.

Fórmula para acceder a un elemento

Dirección del elemento = Dirección base + índice * tamaño del tipo de dato

Según Cormen et al. (2022), esta propiedad de acceso por índice permite que las operaciones de lectura y escritura sean de tiempo constante O(1).

Ventajas

  • Acceso directo y rápido a cualquier elemento (O(1)).
  • Eficiencia en el uso de CPU y caché por memoria contigua.
  • Sencillez de implementación.

Limitaciones

  • Tamaño fijo: se debe conocer de antemano
  • Ineficacia al insertar o eliminar (requiere mover elementos)
  • Uso potencialmente ineficiente de memoria (espacios sin utilizar)

Aplicaciones prácticas

ÁreaUso del arreglo estático
Imágenes digitalesRepresentación de píxeles
Juegos 2DMatrices para representar mapas/tableros
Sensores IoTBuffer de muestras de tamaño fijo
Simulaciones científicasModelo de matrices o vectores o vectores físicos

Representación visual

Tenemos un arreglo estático de 4 posiciones. El arreglo no puede crecer, solo cambiar sus valores.

Ejemplos

StaticArray.java
package datastructures;

public class StaticArray {
private final int[] data;

public StaticArray(int size) {
data = new int[size];
}

public void set(int index, int value) {
if (index < 0 || index >= data.length)
throw new IndexOutOfBoundsException("Índice fuera de rango");
data[index] = value;
}

public int get(int index) {
if (index < 0 || index >= data.length)
throw new IndexOutOfBoundsException("Índice fuera de rango");
return data[index];
}

public int length() {
return data.length;
}
}

Referencias