Вы находитесь на странице: 1из 17

ESTRUCTURAS DE DATOS

Conceptualizacin de
estructuras de datos
Por: Eduardo Robayo

ESTRUCTURAS DE DATOS

Son formas de organizar informacin o datos.


Una estructura de datos se parece a una clase.
Realmente una estructura de datos es una clase
contenedora que proporciona almacenamiento para
tems de datos, y capacidades para almacenar y
recuperar estos datos.
Generalmente a las estructuras de datos se les asocian los
ALGORITMOS que es es una secuencia de instrucciones
que realizan una tarea (flowchart).
Existen dos tipos de estructuras de datos:
Estticas (arreglos, estructuras). Tamao fijo.
Dinmicas (listas, pilas, colas, rbol). Su tamao puede
cambiar.
Cada tipo de estructura de datos tiene sus mtodos
especficos.
Mtodos comunes en las estructuras de datos son:
Agregar elemento.
Eliminar elemento.

Arreglos (Arrays)
En POO hay dos tipos de datos: Primitivo (como int o double) y
objetos, en Java los arrays son objetos.
Las estructuras de datos mas sencillas.
Grupo de elementos que ocupan posiciones de memoria casi siempre
adyacentes, todos con el mismo nombre y del mismo tipo.
Un arreglo es una coleccin de variables del mismo tipo que son
referenciadas con un nombre comn a todas.
Respecto de la memoria es importante entender que las variables del
arreglo se ubican en posiciones de memoria casi siempre adyacentes.
Un arreglo puede ser:

Unidimensional
Multidimensional.

A una variable del arreglo se le denomina Elemento del arreglo.


A cada elemento del arreglo le corresponde un ndice para referirse a
el.
Son estructuras de datos porque mantienen el mismo tamao durante
toda la ejecucin del programa.

Arreglos de una dimensin


Arreglo: Nombres [6]
Pedro

Juan

Luis

Mara

Antonio

Angela

Nombres[
0]

Nombres[
1]

Nombres[
2]

Nombres[
3]

Nombres[
4]

Nombres[
5]

Para hacer referencia a un elemento en


particular del arreglo, se indica el nombre
del arreglo y el nmero de posicin del
elemento. Las posiciones generalmente se
cuentan a partir del cero como primera
posicin.
Lectura: Arrays
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

Como se declara un arreglo


en Java
Java proporciona tres tcnicas para
crear un array de una dimensin:
usar slo un inicializador,
usar slo la palabra clave new, y
utilizar la palabra clave new con un
inicializador.

Utilizando solo un
inicializador
//Creacin de un arreglo de animales.
String animales[] = {Perro, Gato, Pollo};
Crea un array que contendr 3 elementos.

Usando la palabra clave


NEW
//Creacin de un arreglo de
SALARIOS
Int [] salarios = new int [4];
Cada elemento contendr un tem de
tipo primitivo Entero.

Usando new y un
inicializador
El siguiente cdigo utiliza la palabra
clave new con un inicializador para
crear un array unidimensional con
datos basados en tipos primitivos.
int [] resultados = new int [] { 70,
80, 20, 30 };

Es posible crear arrays de cualquier


tipo de objeto
Circulo[] arrayCirculo = new Circulo[10];
//Declara un array de 10 objetos Circulo (Circulo es una
clase definida previamente);
Entonces, es posible crear arrays de cualquier tipo de
objeto.
El array de objetos se inicializa similar a un array
tradicional:
For (int i=0; i < arrayCirculo.length;i++)
arrayCirculo[i] = new Circulo();

Como se agregan datos a un array


for(int i=0; i<miarreglo.length; i++){
miarreglo[i]=i*i+4;
}

Mostrar los elementos del array


for(int i=0; i<nombres.length; i++){
System.out.println(nombres[i]);
}

Buscar elementos y ordenar un


array
Existen 3 algoritmos que son comunes
para buscar y ordenar los elementos
de un array.
Bsqueda lineal
Bsqueda binaria
Ordenacin de burbuja

Bsqueda lineal
El algoritmo de bsqueda lineal busca en un arreglo unidimensional
un dato especfico. La bsqueda primero examina el elemento con el
ndice 0 y continua examinando los elementos sucesivos hasta que
se encuentra el tem o no quedan ms elementos que examinar.
Pseudocdigo
DECLARE INTEGER i, buscar= 72
DECLARE INTEGER x [] = [ 20, 15, 12, 30, -5, 72, 456 ]
FOR i = 0 TO LENGTH (x) - 1
IF x [i] IS buscarTHEN
PRINT "Found ", buscar
Ventaja de ste
END
algoritmo: Puede buscar
END IF
en arreglos ordenados o
NEXT i
desordenados.
PRINT "Did not find ", buscar
Desventaja de ste
END
algoritmo: Mucho tiempo

Bsqueda binaria
La bsqueda binaria divide el array en seccin inferior
y superior calculando el ndice central del array.
Si el dato se encuentra en ese elemento, la bsqueda
binaria termina.
Si el dato es numricamente menor que el dato del
elemento central, la bsqueda binaria calcula el
ndice central de la mitad inferior del array, ignorando
la seccin superior y repite el proceso.
La bsqueda continua hasta que se encuentre el dato
o se exceda el lmite de la seccin (lo que indica que
el dato no existe en el array)

Pseudocdigo de la bsqueda binaria


DECLARE
DECLARE
DECLARE
DECLARE

INTEGER
INTEGER
INTEGER
INTEGER

x [] = [ -5, 12, 15, 20, 30, 72, 456 ]


loIndex = 0
hiIndex = LENGTH (x) - 1
midIndex, buscar= 72

WHILE loIndex <= hiIndex


midIndex = (loIndex + hiIndex) / 2
IF buscar> x [midIndex] THEN
loIndex = midIndex + 1
ELSE
IF buscar< x [midIndex] THEN
hiIndex = midIndex - 1
ELSE
EXIT WHILE
END IF
END WHILE
IF loIndex > hiIndex THEN
PRINT buscar, " not found"
ELSE
PRINT buscar, " found"
END IF
END

Ventaja:
Reduce el tiempo
Desventaja:
Necesita ordenar el array

Ordenacin por Burbuja


Este algoritmo hace varios pases sobre un array
unidimensional.
Por cada pase, el algoritmo compara datos
adyacentes para determinar si numricamente es
mayor o menor.
Si el dato es mayor (para ordenaciones
ascendentes) o menor (para ordenaciones
descendientes) los datos se intercambian y se
baja de nuevo por el array.
En el ltimo pase, el dato mayor (o menor) se ha
movido al final del array.

Pseudocdigo de la ordenacin por


burbuja
Para ordenacin ascendente
DECLARE INTEGER i, pass
DECLARE INTEGER x [] = [ 20, 15, 12, 30, -5, 72, 456 ]
FOR pass = 0 TO LENGTH (x) - 2
FOR i = 0 TO LENGTH (x) - pass - 2
IF x [i] > x [i + 1] THEN
SWAP x [i], x [i + 1]
END IF
NEXT i
NEXT pass
END

Analice y realice
una prueba de
escritorio para que
entienda el
funcionamiento del
algoritmo.
Desventaja:
Lentitud

Ejercicio en clase
Desarrolle un APPLET que capture las notas
definitivas del primer corte de la asignatura
ESTRUCTURAS DE DATOS e indique:
1. La nota mas alta
2. La nota mas baja
3. El promedio de las notas
4. Debe permitir editar cualquier nota.
5. Mostrar las notas ordenadas de menor a mayor.
Entregue todos los archivos del proyecto
VIRTUALSABANA empaquetados en formato ZIP.

en