Vous êtes sur la page 1sur 49

Algortmica y Programacin

Unidad 7: Arreglos

Algortmica y Programacin
Estructuras de datos
Los arreglos son un tipo de estructura de datos.
Una estructura de datos es una coleccin de datos
que se caracteriza por su organizacin y las
operaciones que se definen en ella.
Las estructuras de datos son muy importantes en
los sistemas de computadora. Los tipos de datos
ms frecuentes utilizados en los diferentes
lenguajes de programacin son:

Algortmica y Programacin
Tipos de datos

Algortmica y Programacin

Estructuras de datos
Las estructuras de datos estticas son
aquellas en las que el tamao ocupado en
memoria se define antes de que el
programa se ejecute y no puede
modificarse durante la ejecucin del
programa.

Algortmica y Programacin

Arreglos
Un arreglo (matriz o vector) es un conjunto finito y
ordenado de elementos homogneos. La
propiedad ordenados significa que el elemento
primero, segundo, tercero,, n-simo de un
arreglo puede ser identificado. Los elementos
de un arreglo son homogneos, es decir, del
mismo tipo de datos (todos, de tipo cadena o
enteros, o reales, etc.).

Algortmica y Programacin
Arreglos unidimensionales:
vectores

El tipo ms simple de arreglo es el arreglo unidimensional o vector.


Un vector de una dimensin denominado NOTAS que consta de n
elementos se puede representar as:

El subndice o ndice de un elemento [1,2,3,,i,,n] designa su


posicin en la ordenacin del vector.
Solo el vector global tiene nombre (NOTAS). Los elementos del
vector se referencian por su subndice o ndice, es decir, su
posicin relativa en el vector.

Algortmica y Programacin

Arreglos unidimensionales:
vectores
Notacin algortmica para declarar vectores:
tipo de variable nombre del arreglo [cantidad de elementos];
Ejemplos:

int numeros [10];


Se estn declarando un vector o arreglo de 10 elementos de tipo entero
char nombres [15];
Se estn declarando un vector o arreglo de 15 elementos de tipo caracter

Algortmica y Programacin

Arreglos unidimensionales:
Operaciones con Vectores
Las operaciones que se pueden realizar con vectores
durante el proceso de resolucin de un problema
usando la programacin son:
Recorrido (acceso secuencial)
Lectura/escritura
Asignacin
Actualizacin (aadir, borrar insertar)
Ordenacin
Bsqueda

Algortmica y Programacin

1. Recorrido (acceso secuencial)


Se puede acceder a cada elemento de un vector
para introducir datos (leer) en l o bien para
visualizar su contenido (escribir).
A la operacin de efectuar una accin general
sobre todos los elementos de un vector se le
denomina recorrido del vector.

Algortmica y Programacin

1. Recorrido (acceso secuencial)


Estas operaciones se realizan utilizando
estructuras repetitivas, cuyas variables de
control (por ejemplo i) se utilizan como
subndices del vector (por ejemplo S[i]).
El incremento del contador del bucle producir
el tratamiento sucesivo de los elementos del
vector.

Algortmica y Programacin

1. Recorrido (acceso secuencial)


Normalmente se utiliza la estructura de repeticin para, ya
que se conoce de antemano la cantidad de veces que se
desea repetir el bucle:

para i 1 hasta n hacer


escribir(Introduzca el elemento ,i, del vector F: )
leer(F[i])
fin_para

Algortmica y Programacin

1. Recorrido (acceso secuencial)


Tambin se pueden utilizar las estructuras de repeticin
mientras y repetir:
i1
mientras i <= 20 hacer
escribir(Introduzca el elemento ,i, del
vector F: )
leer(F[i])
ii+1
fin_mientras

Algortmica y Programacin

1. Recorrido (acceso secuencial)


i1
repetir
escribir(Introduzca el elemento ,i, del vector F:
)
leer(F[i])
ii+1
hasta_que i > 20

Algortmica y Programacin

2. Lectura/escritura
La lectura/escritura de datos en arreglos
normalmente se realiza con estructuras
repetitivas (usando un recorrido secuencial).
Las instrucciones simples de lectura/escritura se
representarn como:
leer(A[5])
lectura del elemento 5 del vector A
escribir(A[8]) escribir el elemento 8 del vector A

Algortmica y Programacin

2. Lectura/escritura
Generalmente se desea leer o escribir el vector
completo, para lo cual se debe hacer un
recorrido del vector:

para i1 hasta n hacer


escribir(Introduzca el elemento ,i, del
vector F: )
leer(F[i])
fin_para

Algortmica y Programacin

2. Lectura/escritura
Para escribir el vector nombres:
para i1 hasta n hacer
escribir(nombres[i])
fin_para

Algortmica y Programacin

3. Asignacin
La asignacin de valores a un elemento del vector
se realizar con la instruccin de asignacin:
A[29] 5 asigna el valor 5 al elemento 29 del
vector A
Suma A[1] + A[3]
A[3] A[3] + 10.8
A[1] A[4] + A[5]

Algortmica y Programacin

4. Actualizacin
La operacin de actualizacin de un vector
consta a su vez de tres operaciones ms
elementales:
Aadir elementos
Insertar elementos
Borrar elementos

Algortmica y Programacin

4. Actualizacin
Aadir elementos: es la operacin de
agregar un nuevo elemento al final del
vector. La nica condicin necesaria para
esta operacin consistir en la
comprobacin de espacio de memoria
suficiente para el nuevo elemento, dicho
de otra manera, que el vector no contenga
todos los elementos con que fue definido.

Algortmica y Programacin

4. Actualizacin
Ejemplo: se tiene un vector de edades definido para 7
elementos, pero ya tiene almacenado 5 elementos
EDADES(1), EDADES(2), EDADES(3), EDADES(4) y
EDADES(5). Se podrn aadir dos elementos ms al
final del vector con una simple operacin de asignacin:
EDADES(6) 23
EDADES(7) 20
(Si conoce los espacio del vector que estn libres.)

Algortmica y Programacin

5. Mtodos de ordenamiento y
bsqueda en vectores

Algortmica y Programacin

Ordenacin (clasificacin)
Es la operacin de organizar un conjunto de
datos en algn orden o secuencia especfica, tal
como creciente o decreciente para datos
numricos o alfabticamente para datos de tipo
carcter o cadena de caracteres.
Operaciones tpicas de ordenacin son: lista de
nmeros, archivos de clientes de banco,
nombres en una agenda telefnica.

Algortmica y Programacin

Ordenacin (clasificacin)

En sntesis, la ordenacin significa poner


objetos
en
orden
ascendente
o
descendente. El propsito final de la
clasificacin es facilitar la manipulacin de
datos en un vector.

Algortmica y Programacin

Ordenacin (clasificacin)
Los mtodos directos son los que se
realizan en el espacio ocupado por el
arreglo. Los que vamos a estudiar son:
Mtodo de intercambio o burbuja.
Ordenacin por Insercin
Ordenacin por Seleccin

Algortmica y Programacin

Mtodo de intercambio o de
burbuja
Se basa en el principio de comparar pares
de
elementos
adyacentes
e
intercambiarlos entre s hasta que estn
todos ordenados.

Algortmica y Programacin

Mtodo de intercambio o de
burbuja
El elemento cuyo valor es mayor sube posicin a
posicin hacia el final de la lista, al igual que las
burbujas de aire en un depsito.
Tras realizar un recorrido completo por todo el
vector, el elemento mencionado habr subido
en la lista y ocupar la ltima posicin.
En el segundo recorrido, el segundo elemento
llegar a la penltima posicin, y as
sucesivamente.

Algortmica y Programacin

Mtodo de intercambio o de
burbuja
Los pasos a dar son:
1. Comparar A[1] y A[2], si estn en orden, se mantienen
como estn, en caso contrario se intercambian entre si.
2. A continuacin se comparan los elementos 2 y 3, de
nuevo se intercambian si es necesario.
3. El proceso contina hasta que cada elemento del
vector ha sido comparado con sus elementos
adyacentes y se han realizado los intercambios
necesarios.

Algortmica y Programacin

Mtodo de intercambio o de
burbuja
La accin de intercambiar entre s los valores de dos
elementos A[i], A[i+1] es una accin compuesta que
contiene las siguientes acciones, utilizando una variable
auxiliar:
A[i]

A[i+1]

3
AUX

Algortmica y Programacin
Mtodo de intercambio o de
burbuja
En pseudocdigo:
AUX A[i]
A[i] A[i+1]
A[i+1] AUX

Algortmica y Programacin

Mtodo de intercambio o de
burbuja
Suponga que se quiere ordenar de forma
ascendente el vector:

Algortmica y Programacin
/*Ordenamiento Burbuja */
#include <iostream>
using namespace std;
#define TAM 9
int main()
{
int a[TAM] = { 9, 8, 0, 2, 5, 1, 3, 2, 9};
int i, pasada, aux;
cout << "Datos en el orden inicial:"<< endl;
for(i=0;i<=TAM-1;i++)
cout <<a[i] << endl;
for(pasada=1;pasada<=TAM-1;pasada++) /*pasadas*/
for (i=0;i<=TAM-2;i++)
if (a[i]>a[i+1]) /*comparacin */
{
/*intercambio*/
aux=a[i];
a[i] = a[i+1];
a[i+1] = aux;
}
cout<< "Datos ordenados en sentido ascendente:" << endl;
for (i=0;i<=TAM-1;i++ )
cout << a[i] << endl;
return 0;
}

Mtodo de
intercambio o
de burbuja

Algortmica y Programacin

Mtodos de Bsqueda
La recuperacin de informacin, como ya se ha
comentado, es una de las aplicaciones ms
importantes de las computadoras.
La bsqueda se refiere a la operacin de
encontrar la posicin de un elemento entre un
conjunto de elementos dados: lista, tabla o
fichero.
Existen diferentes algoritmos de bsqueda. El
algoritmo elegido depende de la forma en que
se encuentren organizados los datos.

Algortmica y Programacin

Mtodos de Bsqueda
La operacin de bsqueda de un elemento
N en un conjunto de elementos consiste
en:
1. Determinar si N pertenece al conjunto y,
en ese caso, indicar su posicin en l.
2. Determinar si N no pertenece al
conjunto.

Algortmica y Programacin

Mtodos de Bsqueda
Los mtodos ms usuales de bsqueda
son:
Bsqueda secuencial o lineal.
Bsqueda binaria.

Algortmica y Programacin

Bsqueda secuencial o lineal


El mtodo ms sencillo de buscar un elemento en
un vector es explorar secuencialmente el vector
(recorrer el vector), desde el primer elemento
hasta el ltimo. Si se encuentra el elemento
buscado visualizar un mensaje similar a
Elemento encontrado en la posicin x, en caso
contrario visualizar un mensaje similar a
Elemento no existe en el vector.

Algortmica y Programacin

Bsqueda secuencial o lineal


En otras palabras, la bsqueda secuencial
compara cada elemento del vector con el valor
deseado, hasta que se encuentra o termina de
recorrer el vector completo.
La bsqueda secuencial no requiere ningn
registro por parte del vector por consiguiente no
requiere que el vector est ordenado.

Algortmica y Programacin

Bsqueda secuencial o lineal


Este mtodo tiene el inconveniente del consumo
excesivo de tiempo en la localizacin del
elemento buscado. Cuando el elemento
buscado no se encuentra en el vector, se
verifican o comprueban sus n elementos. Por
esto no es el mtodo ms adecuado para
vectores con un gran nmero de elementos.

Algortmica y Programacin
#include <iostream>
using namespace std;
#define TAM 10
int main()
{
int a[TAM], temp, i, j, num, c, posicion;
for (c = 0; c < TAM; c++) //llenar el arreglo con nmeros
{
cout <<"Dime un valor : " << endl;
cin >> a[c];
}
cout << "Numero a buscar? "<<endl;
cin >>num;
for (i=0; i< TAM; i++)
if (a[i] == num)
{
temp =1;
posicion= i;
}
else temp = 0;
if (temp==1)
cout << "Valor encontrado en la posicion:" << posicion << endl;
else if (temp == 0) cout << "No existe" <<endl;
cout << "El arreglo era:" << endl;
for (i=0; i< TAM; i++)
cout << a[i] <<endl;
return 0;
}

Bsqueda
secuencial o
lineal

Algortmica y Programacin

Bsqueda binaria
Presupone una ordenacin previa de los
elementos del vector.
Este mtodo se
basa en la divisin
sucesiva del vector en dos partes, y seguir
dividiendo cada mitad hasta encontrar el
elemento buscado.

Algortmica y Programacin

Bsqueda binaria
Utiliza un mtodo de divide y vencers para localizar el
valor deseado.
Con este mtodo se examina primero el elemento central
del vector, si este es el elemento buscado, entonces la
bsqueda ha terminado.
En caso contrario se determina si el elemento buscado
est en la primera o segunda mitad de la lista, y a
continuacin se repite este proceso, utilizando el
elemento central de esa sublista.

Algortmica y Programacin

Bsqueda binaria
Es un mtodo eficiente siempre que el
vector est ordenado.
En la prctica esto suele suceder, pero no
siempre es as. Por esta razn la
bsqueda binaria exige una ordenacin
previa del vector.

Algortmica y Programacin

Arreglos de varias dimensiones


Existen grupos de datos que se representan mejor
en forma de tabla o matriz con dos o ms
subndices. Ejemplos tpicos de tablas o
matrices son:
Distancias entre ciudades
Horarios
Informes de ventas peridicas

Algortmica y Programacin

Arreglos de varias dimensiones


Se pueden definir a las tablas o matrices como
arreglos multidimensionales, cuyos elementos
se pueden referenciar por dos, tres o ms
subndices. Los arreglos de varias dimensiones
se dividen en dos grandes grupos:
Arreglos bidimensionales: tablas o matrices.
Arreglos multidimensionales.

Algortmica y Programacin

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 subndices para poder identificar cada
elemento del arreglo.

Algortmica y Programacin
Arreglos bidimensionales: matrices
Matriz A:

Fila 1

30

Fila 2
Fila 3
Fila 4

Fila 5

150
Columna 1 Columna 2

Columna 6

Algortmica y Programacin
Arreglos bidimensionales: matrices
A[2,5]

Matriz A:

30
Subndice i
para las filas

150
A[5,2]

Subndice j
para las columnas

Algortmica y Programacin

Arreglos multimensionales
Un arreglo se puede definir de tres, cuatro y hasta
n dimensiones.
Se manejan los mismos conceptos para los
subndices que en los vectores o matrices.
Cada elemento del arreglo se puede identificar
usando la cantidad de subndices necesarios,
por ejemplo en un arreglo de n dimensiones se
escribir: A[I1, I2, I3, , In]

Algortmica y Programacin

Arreglos multimensionales
Ejemplo: Un arreglo de tres dimensiones puede
ser uno que contenga los datos relativos al
nmero de estudiantes de una universidad de
acuerdo a los siguientes criterios:
ao (primero a quinto)
sexo (femenino/masculino)
facultad (cinco facultades diferentes)

Algortmica y Programacin

Arreglos multimensionales

Curso

Facultad

Sexo