¿Qué son los Arrays (Vectores)?
Un array (también llamado vector) es una estructura de datos que permite almacenar un conjunto de elementos del mismo tipo en posiciones consecutivas de memoria.
Cada elemento se identifica mediante un índice, que permite acceder directamente a él sin necesidad de recorrer toda la estructura.
Conceptos fundamentales
Para comprender los arrays es imprescindible conocer los siguientes conceptos:
- Elemento: dato almacenado en el array.
- Índice: posición de cada elemento dentro del array.
- Longitud: número total de elementos.
- Tipo de dato: todos los elementos deben ser del mismo tipo.
- Memoria contigua: los elementos se almacenan de forma consecutiva.
Funcionamiento de un Array
Cuando se declara un array:
- Se reserva un bloque contiguo de memoria.
- Cada posición recibe un índice.
- Los elementos se almacenan en esas posiciones.
- El acceso a cualquier elemento se realiza mediante su índice.
Índice
0 1 2 3 4
┌────┬────┬────┬────┬────┐
│ 12 │ 25 │ 8 │ 31 │ 19 │
└────┴────┴────┴────┴────┘
Características de los Arrays
Los arrays presentan las siguientes características:
- Almacenan elementos del mismo tipo.
- Acceso directo mediante índice.
- Tamaño fijo (en la mayoría de lenguajes).
- Memoria contigua.
- Inserciones y eliminaciones poco eficientes.
Declaración e inicialización
La sintaxis depende del lenguaje de programación, pero conceptualmente consiste en definir:
- Tipo de dato.
- Nombre del array.
- Número de elementos.
Ejemplo conceptual:
Enteros[5]
Índice → 0 1 2 3 4
También es posible inicializarlo con valores:
[10, 20, 30, 40, 50]
Operaciones básicas
Las operaciones más habituales sobre un array son:
- Acceder a un elemento.
- Modificar un elemento.
- Recorrer todos los elementos.
- Buscar un valor.
- Ordenar los elementos.
Acceso mediante índice
El acceso a un elemento se realiza indicando su posición.
Ejemplo:
Array
Índice
0 1 2 3
A B C D
Acceso al índice 2
↓
C
El tiempo de acceso es:
- O(1) (constante).
Recorrido de un Array
Cuando es necesario procesar todos los elementos, se recorre el array desde el primer índice hasta el último.
Índice
0 → 1 → 2 → 3 → 4
El coste temporal es:
- O(n).
Inserción y eliminación
Los arrays permiten insertar y eliminar elementos, pero estas operaciones pueden requerir desplazar otros elementos.
Ejemplo:
Antes
[10][20][30][40]
Insertar 15
↓
[10][15][20][30][40]
Todos los elementos posteriores deben desplazarse una posición.
Arrays multidimensionales
Un array puede contener otros arrays, formando estructuras de varias dimensiones.
Ejemplo de matriz:
Columna
0 1 2
0 [1] [2] [3]
1 [4] [5] [6]
2 [7] [8] [9]
Fila
Cada elemento se identifica mediante varios índices.
Ejemplo:
matriz[1][2] = 6
Comparación Array vs Lista Enlazada
| Array | Lista enlazada |
|---|---|
| Memoria contigua | Memoria no contigua |
| Acceso O(1) por índice | Acceso O(n) |
| Inserción lenta | Inserción rápida |
| Eliminación lenta | Eliminación rápida |
| Mejor uso de caché | Menor eficiencia de caché |
Caso práctico
Situación
Una aplicación necesita almacenar las notas de 30 alumnos y acceder constantemente a ellas mediante su posición.
Solución
La estructura más adecuada es un array, porque:
- Todos los datos son del mismo tipo.
- El número de elementos es conocido.
- Se necesita acceso rápido por índice.
No sería la mejor opción si el número de alumnos cambiara continuamente durante la ejecución.
Ventajas e inconvenientes
Ventajas
- Acceso muy rápido por índice.
- Implementación sencilla.
- Bajo consumo de memoria adicional.
- Excelente rendimiento en recorridos.
- Buena localidad de referencia en memoria.
Inconvenientes
- Tamaño normalmente fijo.
- Inserciones y eliminaciones costosas.
- Solo almacenan elementos del mismo tipo.
- Posible desperdicio de memoria si no se utiliza toda su capacidad.
Errores habituales
- Confundir el primer índice con el valor 1.
- Acceder a posiciones fuera de los límites del array.
- Pensar que los arrays pueden crecer automáticamente en todos los lenguajes.
- Confundir arrays con listas enlazadas.
- Olvidar que insertar elementos implica desplazar posiciones.
Cómo evitarlos
- Recordar que normalmente el primer índice es 0.
- Comprobar siempre los límites del array.
- Diferenciar acceso, búsqueda e inserción.
- Comprender cuándo conviene utilizar un array frente a otras estructuras de datos.
Relaciones con otros temas
Los arrays están directamente relacionados con:
- Variables.
- Tipos de datos.
- Estructuras de datos.
- Matrices.
- Listas enlazadas.
- Algoritmos de búsqueda.
- Algoritmos de ordenación.
- Complejidad temporal.
- Memoria.
Conceptos clave para recordar
[!NOTE]
- Un array es una estructura de datos que almacena elementos del mismo tipo.
- Sus elementos se almacenan en memoria contigua.
- El acceso mediante índice tiene complejidad O(1).
- El recorrido completo del array tiene complejidad O(n).
- En la mayoría de lenguajes, el primer índice es 0.
- Insertar o eliminar elementos suele requerir desplazar posiciones, con coste O(n).
- Los arrays multidimensionales permiten representar matrices y tablas.
- Son la estructura idónea cuando el tamaño de la colección es conocido y se necesita acceso rápido por posición.