TIPOS DE DATOS: ARREGLOS
1. DEFINICION
Es un conjunto de datos que se almacenan en memoria de manera contigua con el mismo
nombre. Para diferenciar los elementos de un arreglo se utilizan índices detrás del nombre del
arreglo y encerrados por []. El elemento 5° (quinto) de un arreglo, es representado por el índice
[4], ya que los índices comienzan en 0. Esto significa que un arreglo de 10 elementos tendría los
índice del 0 al 9: [0...9]
Un arreglo es un grupo de ubicaciones de memoria consecutivos, todas ellas del mismo
tipo. Para hacer referencia a una ubicación o elemento especifico en el arreglo, específicamente
su nombre y el número de posición del elemento especifico en el arreglo.
El número de posición se le conoce como el índice o subíndice, el primer elemento en
todo arreglo tiene el subíndice 0 y se conoce algunas veces cono elemento cero.
2. TIPOS DE ARREGLOS
a) Arreglos unidimensionales: vectores
El tipo más simple de arreglo es el arreglo unidimensional o vector. Un vector de una dimensión
denominado NOTAS que consta de n elementos. El subíndice o índice de un elemento [1, 2, 3,
i…, n] designa su posición en la ordenación del vector.
Para hacer referencia a un elemento del vector se usa el nombre del mismo, seguido del
índice (entre corchetes), el cual indica una posición en particular del vector.
Por ejemplo:
V[x], Donde: V = Nombre del arreglo
X = Numero de datos que constituyen el arreglo (tamaño).
b) Arreglos bidimensionales: matrices
Un arreglo bidimensional se puede considerar como un vector de vectores. Es un
conjunto de elementos, todos del mismo tipo, en el cual el orden de los componentes es
significativo y en el que se necesitan especificar dos subíndices para poder identificar cada
elemento del arreglo.
Un arreglo bidimensional se dice que tiene M*N elementos, donde M es el número de
filas y N el número de columnas.
c) Arreglos multimensionales
Un arreglo se puede definir de tres, cuatro y hasta n dimensiones. Se manejan los mismos
conceptos para los subíndices que en los vectores o matrices. Cada elemento del arreglo se puede
identificar usando la cantidad de subíndices necesarios, por ejemplo en un arreglo de n
dimensiones se escribirá: A [I1, I2, I3,…, In]
Es un tipo de dato estructurado, que está compuesto por dimensiones. Para hacer
referencia a cada componente del arreglo es necesario utilizar n índices, uno para cada
dimensión. El término dimensión representa el número de índices utilizados para referirse a un
elemento particular en el arreglo. Los arreglos de más de una dimensión se llaman arreglos
multidimensionales.
Ejemplo: Un arreglo de tres dimensiones puede ser uno que contenga los datos relativos
al número de estudiantes de una universidad de acuerdo a los siguientes criterios:
Año (primero a quinto)
Sexo (femenino/masculino)
Facultad (cinco facultades diferentes)
d) Arreglos con múltiple subíndices
Es la representación de tablas de valores, consistiendo de información arreglada en renglones y
columnas. Para identificar un elemento particular de la tabla, deberemos de especificar dos
subíndices; el primero identifica el renglón del elemento y el segundo identifica la columna del
elemento. A los arreglos que requieren dos subíndices para identificar un elemento en particular
se conocen como arreglo de doble subíndice. Note que los arreglos de múltiples subíndices
pueden tener más de dos subíndices. El estándar ANSI indica que un sistema ANSI C debe
soportar por lo menos 12 subíndices de arreglo.
3. OPERACIONES CON ARREGLOS
Las operaciones en arreglos pueden clasificarse de la siguiente forma:
a) Lectura
Este proceso consiste en leer un dato de un arreglo y asignar un valor a cada uno de sus
componentes. La lectura se realiza de la siguiente manera:
Para i desde 1 hasta N haz x < arreglo[i]
b) Escritura
Consiste en asignarle un valor a cada elemento del arreglo. La escritura se realiza de la
siguiente manera:
Para i desde 1 hasta N haz arreglo[i] < x
c) Asignación
No es posible asignar directamente un valor a todo el arreglo, por lo que se realiza de la
manera siguiente:
Para i desde 1 hasta N haz arreglo[i] < algún_ valor
d) Actualización
Dentro de esta operación se encuentran las operaciones de eliminar, insertar y modificar
datos. Para realizar este tipo de operaciones se debe tomar en cuenta si el arreglo esto o no
ordenado.
e) Búsqueda
La búsqueda consiste en encontrar un determinado valor dentro de un conjunto de datos,
para recuperar alguna información asociada con el valor buscado.
Existen diferentes formas de realizar esta operación; en otras palabras hay distintos
métodos o técnicas para realizar búsqueda en vectores.
• Búsqueda secuencial o lineal
• Búsqueda Binaria
• Búsqueda Hash
• Arboles de búsqueda
f) Inserción
Esta operación consiste en adicionar un nuevo elemento al arreglo. Se debe tener en
cuenta:
• Que no sobrepase el tamaño máximo declarado para el vector.
• La operación puede darse para un arreglo ordenado o desordenado.
• Si el arreglo está desordenado, se incrementa en uno el número de elementos y en esa
posición N + 1 se inserta el nuevo elemento, si el arreglo está ordenado hay que buscar el
lugar dentro del arreglo donde se debe inserta el nuevo valor para que continúe el vector
ordenado.
• Correr todos los elementos del vector una posición a la derecha, para abrirle espacio al
nuevo elemento, a partir del lugar donde debe insertarse el nuevo dato.
• Insertar el nuevo elemento del vector en el espacio que le corresponde.
g) Eliminación
Consiste en eliminar un elemento del arreglo, puede darse cuando el arreglo está
desordenado u ordenado. El proceso de eliminación sigue los pasos que se describen a
continuación:
• Verificar que el arreglo no esté vacío.
• Buscar la posición donde se encuentra el elemento a borrar.
• Correr los elementos una posición a la izquierda, a partir de la posición siguiente donde
se encuentra el valor a borrar.
• Disminuir el número de elementos del vector en uno.
• Enviar un mensaje en caso de que el elemento a borrar no esté dentro del arreglo.
4. ALGORITMOS DE BUSQUEDA
Con frecuencia el programador trabajara con grandes cantidades de información
almacenada en arreglos. Podría ser necesario determinar si algún arreglo contiene un valor que
sea igual a cierto valor clave.
El proceso para encontrar un elemento particular en un arreglo se llama búsqueda.
Estudiaremos dos técnicas de búsqueda: una técnica simple llamada búsqueda lineal y una más
eficiente llamada búsqueda binaria. Ambos programas se pueden implementar recursivamente o
no.
Búsqueda lineal o secuencial
La búsqueda secuencial o lineal busca un elemento de una lista utilizando un valor
destino llamado clave. En una búsqueda secuencial (a veces llamada búsqueda lineal), los
elementos de una lista o vector se exploran (se examinan) en secuencia, uno después de otro. La
búsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona cuyo número de
teléfono es 958-220000 en un directorio o listado telefónico de su ciudad. Los directorios de
teléfonos están organizados alfabéticamente por el nombre del abonado en lugar de por números
de teléfono, de modo que deben explorarse todos los números, uno después de otro, esperando
encontrar el número 958-220000.
El algoritmo de búsqueda secuencial compara cada elemento del arreglo con la clave de
búsqueda. Dado que el arreglo no está en un orden prefijado, es probable que el elemento a
buscar pueda ser el primer elemento, el último elemento o cualquier otro. De promedio, al menos
el programa tendrá que comparar la clave de búsqueda con la mitad de los elementos del arreglo.
El método de búsqueda lineal funcionará bien con arreglos pequeños o no ordenados. La
eficiencia de la búsqueda secuencial es pobre, tiene complejidad lineal, O(n).
En síntesis la búsqueda lineal compara los elementos del arreglo con la clave de búsqueda
hasta que encuentra el elemento o bien hasta que se determina que no se encuentra.
int busqueda lineal (int A[], int clave, int n)
{
for (int i=0;i<n;i++)
if (A[i]==clave) return i;
return -1;
}
Este método funciona bien con arreglos pequeños y con los no ordenados. En arreglos
grandes u ordenados conviene aplicar la búsqueda binaria que es más eficiente.
Búsqueda binaria
Dados un entero X y un arreglo A de n enteros que se encuentran ordenados y en
memoria, encontrar un i talque A[i] == X o retornar 0 si X no se encuentra en el arreglo
(consideramos los elementos del arreglo de 1 a N. La estrategia consiste en comparar X con el
elemento del medio del arreglo, si es igual entonces encontramos el elemento, sino, cuando X es
menor que el elemento del medio aplicamos la misma estrategia al array a la izquierda del
elemento del medio y si X es mayor que el elemento del medio aplicamos la misma estrategia al
array a la derecha de dicho elemento.
Para simplificar el c´odigo definimos A[0]=X.
int busqueda binaria(int A[],int X,int n)
{
int izq=1,medio,der=n;
A[0]=X;
do
{
medio = (izq+der) / 2;
if (izq > der)
medio=0;
else if A[medio] < X
izq = medio +1;
else der = medio-1;
}
while (A[medio] != X);
return medio;
}
En síntesis las condiciones que debe cumplir el arreglo para poder usar búsqueda binaria son
que el arreglo este ordenado y que se conozca el número de elementos. La búsqueda termina
cuando encontramos el elemento o cuando el tamaño del arreglo a examinar sea cero.
También están estos otros algoritmos de búsqueda:
Búsquedas en Arreglos: Una búsqueda es el proceso mediante el cual podemos localizar
un elemento con un valor específico dentro de un conjunto de datos. Terminamos con
éxito la búsqueda cuando el elemento es encontrado.
Búsqueda por hash: La idea principal de este método consiste en aplicar una función
que traduce el valor del elemento buscado en un rango de direcciones relativas. Una
desventaja importante de este método es que puede ocasionar colisiones.
BIBLIOGRAFÍA
Carrillo, A. G. (2006). Fundamentos de Programación en C++. Delta Publicaciones.
Aguilar, J., García, L., Martínez, L. Z., Joyanes, I., & Zahonero, I. (2007). Estructura de
datos en C#. McGraw-Hill.
Badía, J. M., Martínez, G., & Murgui, J. Tipos y estructuras básicas.
Deitel, H. M., & Deitel, P. J. (2003). Como programar en C. Pearson educación.