concepto de estructuras de datos

17
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo

Upload: eduardo-robayo-castro

Post on 08-Jul-2015

2.864 views

Category:

Education


0 download

DESCRIPTION

estructuras de datos

TRANSCRIPT

Page 1: concepto de estructuras de datos

ESTRUCTURAS DE DATOS“Conceptualización de estructuras de datos”

Por: Eduardo Robayo

Page 2: concepto de estructuras de datos

ESTRUCTURAS DE DATOS• Son formas de organizar información o datos.

• Una estructura de datos se parece a una “clase”.

• Realmente una estructura de datos es “una clase contenedora queproporciona almacenamiento para ítems de datos, y capacidades paraalmacenar y recuperar estos datos”.

• Generalmente a las estructuras de datos se les asocian los ALGORITMOS quees “es una secuencia de instrucciones que realizan una tarea” (flowchart).

• Existen dos tipos de estructuras de datos:

– Estáticas (arreglos, estructuras). Tamaño fijo.

– Dinámicas (listas, pilas, colas, árbol). Su tamaño puede cambiar.

• Cada tipo de estructura de datos tiene sus métodos específicos.

• Métodos comunes en las estructuras de datos son:

– Agregar elemento.

– Eliminar elemento.

– Editar elemento.

– Ordenar

– Buscar

Page 3: concepto de estructuras de datos

Arreglos (Arrays)

• En POO hay dos tipos de datos: Primitivo (como int o double) y objetos, enJava 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 colección de variables del mismo tipo que son

referenciadas con un nombre común 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 tamaño durante toda

la ejecución del programa.

Page 4: concepto de estructuras de datos

Pedro Juan Luis María Antonio Angela

Nombres[0] Nombres[1] Nombres[2] Nombres[3] Nombres[4] Nombres[5]

Arreglo: Nombres [6]

Para hacer referencia a un elemento en particular delarreglo, se indica el nombre del arreglo y el número deposición del elemento. Las posiciones generalmente secuentan a partir del cero como primera posición.

Arreglos de una dimensión

Lectura: Arrayshttp://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

Page 5: concepto de estructuras de datos

Como se declara un arreglo en Java

Java proporciona tres técnicas para crear unarray de una dimensión:

– usar sólo un inicializador,

– usar sólo la palabra clave new, y

– utilizar la palabra clave new con un inicializador.

Page 6: concepto de estructuras de datos

Utilizando solo un inicializador

//Creación de un arreglo de animales.String animales[] = {“Perro”, “Gato”, “Pollo”};

Crea un array que contendrá 3 elementos.

Page 7: concepto de estructuras de datos

Usando la palabra clave NEW

//Creación de un arreglo de SALARIOS

Int [] salarios = new int [4];

Cada elemento contendrá un ítem de tipoprimitivo Entero.

Page 8: concepto de estructuras de datos

Usando “new” y un inicializador

El siguiente código utiliza la palabra clave newcon un inicializador para crear un arrayunidimensional con datos basados en tiposprimitivos.

int [] resultados = new int [] { 70, 80, 20, 30 };

Page 9: concepto de estructuras de datos

Es posible crear arrays de cualquier tipo de objeto

Circulo[] arrayCirculo = new Circulo[10];

//Declara un array de 10 objetos Circulo (Circulo es unaclase 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();

Page 10: concepto de estructuras de datos

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]);

}

Page 11: concepto de estructuras de datos

Buscar elementos y ordenar un array

Existen 3 algoritmos que son comunes para buscar y ordenar los elementos de un array.

• Búsqueda lineal

• Búsqueda binaria

• Ordenación de burbuja

Page 12: concepto de estructuras de datos

Búsqueda lineal

El algoritmo de búsqueda lineal busca en un arreglo unidimensional undato específico. La búsqueda primero examina el elemento con el índice 0y continua examinando los elementos sucesivos hasta que se encuentra elítem o no quedan más elementos que examinar.

Pseudocódigo

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 buscarTHENPRINT "Found ", buscarEND

END IF NEXT i PRINT "Did not find ", buscarEND

Ventaja de éste algoritmo: Puede buscar en arreglosordenados o desordenados.Desventaja de éste algoritmo: Mucho tiempo de búsqueda.

Page 13: concepto de estructuras de datos

Búsqueda binaria

La búsqueda binaria divide el array en sección inferior ysuperior calculando el índice central del array.

Si el dato se encuentra en ese elemento, la búsquedabinaria termina.

Si el dato es numéricamente menor que el dato delelemento central, la búsqueda binaria calcula el índicecentral de la mitad inferior del array, ignorando la secciónsuperior y repite el proceso.

La búsqueda continua hasta que se encuentre el dato o seexceda el límite de la sección (lo que indica que el datono existe en el array)

Page 14: concepto de estructuras de datos

Pseudocódigo de la búsqueda binaria

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

DECLARE INTEGER loIndex = 0

DECLARE INTEGER hiIndex = LENGTH (x) - 1

DECLARE INTEGER 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 tiempoDesventaja:Necesita ordenar el array previamente.

Page 15: concepto de estructuras de datos

Ordenación por Burbuja

Este algoritmo hace varios pases sobre un arrayunidimensional.Por cada pase, el algoritmo compara datosadyacentes para determinar si numéricamente esmayor o menor.Si el dato es mayor (para ordenacionesascendentes) o menor (para ordenacionesdescendientes) los datos se intercambian y se bajade nuevo por el array.En el último pase, el dato mayor (o menor) se hamovido al final del array.

Page 16: concepto de estructuras de datos

Pseudocódigo de la ordenación por burbuja

Para ordenación 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

Page 17: concepto de estructuras de datos

Ejercicio en clase

Desarrolle un APPLET que capture las notas definitivas delprimer corte de la asignatura “ESTRUCTURAS DE DATOS”e indique:1. La nota mas alta2. La nota mas baja3. El promedio de las notas4. Debe permitir editar cualquier nota.5. Mostrar las notas ordenadas de menor a mayor.

Entregue todos los archivos del proyecto enVIRTUALSABANA empaquetados en formato ZIP.