4.1 Definición de un arreglo y sus propiedades
Un arreglo es una estructura de datos que representa un conjunto ordenado de elementos de un solo tipo, ubicados en celdas de memoria contiguas. Cada elemento del arreglo tiene un índice único que se usa para acceder a él.
Aquí se muestra un arreglo simple de tamaño 4, que contiene los elementos (1, 2, 3 y 4).
Propiedades del arreglo:
- Tamaño fijo: El tamaño del arreglo se establece al momento de su creación y no puede cambiar durante la ejecución del programa.
- Homogeneidad de elementos: Todos los elementos del arreglo deben ser del mismo tipo (por ejemplo, números enteros, cadenas).
- Ubicación secuencial en memoria: Los elementos del arreglo se almacenan en celdas de memoria contiguas, lo que permite un acceso rápido por índice.
- Acceso rápido por índice: Se puede acceder a cualquier elemento del arreglo en tiempo constante
O(1)
.
4.2 Ejemplos de uso de arreglos
Veamos ejemplos de uso de arreglos que ya podrías conocer:
Almacenamiento de datos de longitud fija
Días de la semana, meses del año:
# Creación de un arreglo con los días de la semana
days_of_week = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
print(days_of_week[2]) # Salida: Wednesday
Matrices y arreglos multidimensionales
Matriz 3x3:
# Creación de una matriz 3x3
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matrix[1][1]) # Salida: 5
Uso en algoritmos de ordenación
Ordenación de un arreglo de números:
# Ordenación de un arreglo de números
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort() # Ordenación del arreglo
print(numbers) # Salida: [1, 2, 5, 5, 6, 9]
Buffer para almacenamiento de datos temporales
Buffer para leer datos de un archivo:
# Creación de un buffer de tamaño 1024 bytes
buffer = [0] * 1024
print(len(buffer)) # Salida: 1024
4.3 Operaciones básicas con arreglos
¡Importante! La clase list en Python es un arreglo dinámico, puede cambiar su tamaño durante la ejecución. Aprenderás más sobre arreglos dinámicos en algunas lecciones.
Operaciones básicas: acceso por índice, inserción, eliminación
Acceso por índice
El acceso a un elemento del arreglo se realiza mediante un índice, que indica su posición.
# Acceso a elementos del arreglo por índice
arr = [10, 20, 30, 40, 50]
print(arr[2]) # Salida: 30
print(arr[-1]) # Salida: 50 (último elemento)
Inserción
La inserción de un elemento en un arreglo puede requerir mover todos los elementos posteriores para hacer espacio para el nuevo elemento.
Ejemplo (inserción de un elemento en el medio del arreglo):
# Inserción de un elemento en el arreglo
arr = [10, 20, 30, 40, 50]
arr.insert(2, 25) # Inserta 25 en la posición 2
print(arr) # Salida: [10, 20, 25, 30, 40, 50]
Eliminación
Eliminar un elemento de un arreglo puede requerir mover todos los elementos posteriores para llenar el espacio libre.
Ejemplo (eliminación de un elemento):
# Eliminación de un elemento del arreglo
arr = [10, 20, 30, 40, 50]
arr.pop(2) # Elimina el elemento en la posición 2
print(arr) # Salida: [10, 20, 40, 50]
4.4 Ventajas y desventajas del uso de arreglos
Consideremos las ventajas y desventajas del uso de arreglos:
Ventajas:
- Acceso rápido por índice: Se puede acceder a cualquier elemento del arreglo en tiempo constante
O(1)
, lo que hace que los arreglos sean muy eficientes para leer datos. - Simplicidad de implementación: Los arreglos son fáciles de entender y usar, y son fáciles de implementar y aplicar a diversas tareas.
- Bajo costo de sobrecarga: Los arreglos ocupan menos memoria en comparación con estructuras de datos más complejas, como listas enlazadas.
Desventajas:
- Tamaño fijo: El tamaño del arreglo se establece al momento de su creación y no puede cambiar. Esto significa que se necesita conocer de antemano el tamaño necesario del arreglo o usar arreglos dinámicos que puedan crecer según sea necesario.
- Costo de inserción y eliminación: La inserción y eliminación de elementos pueden conllevar un gasto de tiempo, ya que requieren mover elementos. En el peor de los casos, la inserción o eliminación de un elemento en medio de un arreglo toma
O(n)
tiempo. - Uso ineficiente de la memoria: Si el arreglo no se usa completamente, las celdas de memoria sobrantes quedan vacías, lo que puede llevar a un uso ineficiente de la memoria.
GO TO FULL VERSION