Sie sind auf Seite 1von 42

BIENVENIDOS AL CURSO :

ESTRUCTURA DE DATOS I
LIC. SALVADOR ELENES URIARTE
SALVADORELENES@HOTMAIL.COM

OBJETIVO GENERAL DE LA MATERIA


Una vez concluido el curso , sers capaz de establecer estructuras lgicas de datos que te permitan hacer un uso ms eficiente del espacio de memoria, de minimizar los tiempos de acceso, as como de lograr formas ms efectivas de insercin y eliminacin de datos en estructuras de almacenamiento.

RELACION DEL CURSO CON OTRAS MATERIAS

ANTERIORES
Fundamentos de programacin. Programacin orientada a objetos. Matemticas para computadora.

QUE APORTA ESTA MATERIA AL PERFIL PROFESIONAL ?


Selecciona e implementa las estructuras de datos necesarias para el desarrollo de aplicaciones orientadas a objetos que proporcionen la mejor solucin a problemas cientficos, tecnolgicos y de propsito general.

APRENDIZAJES REQUERIDOS

CONTENIDO TEMATICO
1.- INTRODUCCION( ANALISIS DE ALGORITMOS, ARREGLOS, REGISTROS Y ARCHIVOS) 2.- MANEJO DE MEMORIA 3.- ESTRUCTURAS LINEALES SECUENCIALES DE ALMACENAMIENTO ESTATICO Y DINAMICO 4.- RECURSIVIDAD 5.- ESTRUCTURAS NO LINEALES DE ALMACENAMIENTO ESTATICO Y DINAMICO. 6.- METODOS DE ORDENAMIENTO Y BUSQUEDA).

EVALUACIN
3 EXAMENES PARCIALES TAREAS Y PRACTICAS 90 PTS 0 PTS.

PUNTUALIDAD Y ASISTENCIA 10 PTS.


100 PTS

BIBLIOGRAFIA
TEXTO : ESTRUCTURAS DE DATOS EN JAVA AUTOR : MARK ALLEN WEISS EDITORIAL : ADDISON WESLEY

BIBLIOGRAFIA
CONSULTA : ESTRUCTURA DE DATOS
AUTOR : OSVALDO CARO, SILVIA GUARDATI

EDITORIAL : McGRAW-HILL, 1992

BIBLIOGRAFIA
CONSULTA : FUNDAMENTOS DE PROGRAMACION EN JAVA 2 AUTOR : HERBERT SCHILDT EDITORIAL : McGRAW-HILL

POLITICAS DEL CURSO


SE TOMARA LISTA 5 MINUTOS DESPUES DE LA HORA DE ENTRADA. NO EXISTEN RETARDOS. LAS TAREAS SERAN ACEPTADAS SOLO EL DIA DE ENTREGA SEALADO. NO ESTA PERMITIDA LA COPIA DE TAREAS NI DE EXAMENES.

POLITICAS
RECUERDA QUE LA COPIA ES 1(UNO) DE CALIFICACION EN EL EXAMEN PARCIAL O FINAL. TU PARTICIPACION DENTRO DEL AULA ES DE GRAN IMPORTANCIA. LAS ASESORIAS SERAN IMPARTIDAS DE CUALQUIER DIA DE LA SEMANA DE 9:00 A 12:00 HRS. PREVIA CITA. LUGAR : DEPARTAMENTO DE ACT. EXTRAESCOLARES

POLITICAS
ESTRICTAMENTE PROHIBIDO EL USO DE CELULARES DURANTE LA CLASE.
SE PROHIBE INTRODUCIR ALIMENTOS Y BEBIDAS AL SALON DE CLASE.

INICIAMOS CON EL PRIMER TEMA.

1.- INTRODUCCION
Como ya sabemos, las computadoras fueron diseadas o ideadas como una herramienta mediante la cual podemos realizar operaciones de clculo complicadas en un lapso de mnimo tiempo. Pero la mayora de las aplicaciones de este fantstico invento del hombre, son las de almacenamiento y acceso de grandes cantidades de informacin.

CONTINUACION..

La informacin que se procesa en la computadora es un conjunto de datos, que pueden ser simples o estructurados. Los datos simples son aquellos que ocupan slo una localidad de memoria, mientras que los estructurados son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un identificador nico.

CONTINUACION..

Debido a que por lo general tenemos que tratar con conjuntos de datos y no con datos simples (enteros, reales, booleanos, etc.) que por s solos no nos dicen nada, ni nos sirven de mucho, es necesario tratar con estructuras de datos adecuadas a cada necesidad. Las estructuras de datos son una coleccin de datos cuya organizacin se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos.

CONTINUACION..

Una estructura de datos se caracteriza por lo siguiente: -Pueden descomponerse en los elementos que la forman.
-La manera en que se colocan los elementos dentro de la estructura afectar la forma en que se realicen los accesos a cada elemento.

-La colocacin de los elementos y la manera en que se accede a ellos puede ser encapsulada.

1.1 Introduccin
Supongamos que nos enfrentamos a un problema como este: Una empresa que cuenta con 150 empleados, desea establecer una estadstica sobre los salarios de sus empleados, y quiere saber cual es el salario promedio, y tambin cuantos de sus empleados gana entre $1250.00 y $2500.00.

Si tomamos la decisin de tratar este tipo de problemas con datos simples, pronto nos percataramos del enorme desperdicio de tiempo, almacenamiento y velocidad. Es por eso que para situaciones de este tipo la mejor solucin son los datos estructurados.
Un arreglo puede definirse como un grupo o una coleccin finita, homognea y ordenada de elementos. Los arreglos pueden ser de los siguientes tipos: De una dimensin. De dos dimensiones. De tres o ms dimensiones. NOTA : Disea el algoritmo o diagrama de flujo y programa en JAVA del problema anterior.

DIAGRAMA DE FLUJO INICIO


DEFINIR VAR. I= 1 , 150 PROM=SS/150 PROM, CON_EMP

VECSDOS(I) SS+=VECSDOS(I) FIN

SI
VECSDOS(I)>=1250 && VECSDOS(I)
<=2500

CON_EMP+=1

NO

class stadisticasdos{ public static void main (String args[]){ double [] vecsdos = new double[10]; float prom; int i, cont_emp=0; float ss=0; for(i=0;i<=10-1;i++) { System.out.print("dame sdo["+(i+1)+"]: "); vecsdos[i]=Leer.datoDouble(); ss+=vecsdos[i]; if (vecsdos[i]>=1250 && vecsdos[i]<=2500) cont_emp=+1; } prom=ss/10; System.out.println(); System.out.println(" Sueldos promedio = "+prom); System.out.println(" Tot. Empleados con sueldos

1.2 Arreglos Unidimensionales


Un arreglo unidimensional es un tipo de datos estructurado que est formado de una coleccin finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un ndice para cada elemento del arreglo que nos da su posicin relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la direccin base del arreglo, el limite inferior y limite superior.

REPRESENTACION EN MEMORIA Los arreglos se representan en memoria de la forma siguiente: x : array[1..5] of integer

1.3 Arreglos Bidimensionales.


Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogneo. El acceso a ellos tambin es en forma directa por medio de un par de ndices.

Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensin del arreglo representa las columnas, cada elemento contiene un valor y cada dimensin representa una relacin.
La representacin en memoria se realiza de dos formas : almacenamiento por columnas o por renglones.

REPRESENTACION EN MEMORIA POR COLUMNAS x : array [1..5,1..7] of integer

REPRESENTACION EN MEMORIA POR RENGLONES

x : array [1..5,1..7] of integer

1.4 Arreglos Multidimensionales


Este tambin es un tipo de dato estructurado, que est compuesto por n dimensiones. Para hacer referencia a cada componente del arreglo es necesario utilizar n ndices, uno para cada dimensin

1.5 Operaciones Con Arreglos

Las operaciones en arreglos pueden clasificarse de la siguiente forma: Lectura Escritura Asignacin Actualizacin Ordenacin Bsqueda

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) ASIGNACION
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]<--algn_valor

d) ACTUALIZACION

Dentro de esta operacin se encuentran las operaciones de eliminar, insertar y modificar datos. Para realizar este tipo de operaciones se debe tomar en cuenta si el arreglo est o no ordenado.

1.6 Ordenaciones en Arreglos.


La importancia de mantener nuestros arreglos ordenados radica en que es mucho ms rpido tener acceso a un dato en un arreglo ordenado que en uno desordenado. Existen muchos algoritmos para la ordenacin de elementos en arreglos, enseguida veremos algunos de ellos.

PROBLEMA CON ARREGLOS


DEFINE UN ARREGLO UNIDIMENSIONAL DE 5 ELEMENTOS TIPO ENTERO Y UN ARREGLO BIDIMENSIONAL DE 5X5 ELEMENTOS TIPO ENTERO Y OBTEN E IMPRIME EL PRODUCTO DE AMBOS ARREGLOS

a)Seleccin Directa Este mtodo consiste en seleccionar el elemento ms pequeo de nuestra lista para colocarlo al inicio y as excluirlo de la lista. Para ahorrar espacio, siempre que vayamos a colocar un elemento en su posicin correcta lo intercambiaremos por aquel que la est ocupando en ese momento. El algoritmo de seleccin directa es el siguiente: i <- 1 mientras i<= N haz min <-i j <- i + 1 mientras j <= N haz si arreglo[j] < [min] entonces min <-j j <- j + 1 intercambia(arreglo[min],arreglo[i]) i <- i +1

b)Ordenacin por Burbuja Es el mtodo de ordenacin ms utilizado por su fcil comprensin y programacin, pero es importante sealar que es el ms ineficiente de todos los mtodos . Este mtodo consiste en llevar los elementos menores a la izquierda del arreglo los mayores a la derecha del mismo. La idea bsica del algoritmo es comparar pares de elementos adyacentes e intercambiarlos entre s hasta que todos se encuentren ordenados.
i <- 1 mientras i < N haz j <- N mientras j > i haz si arreglo[j] < arreglo[j-1] entonces intercambia(arreglo[j],arreglo[j-1]) j<j-1 i <- i +1

1.7 Bsquedas en Arreglos


Una bsqueda es el proceso mediante el cual podemos localizar un elemento con un valor especifico dentro de un conjunto de datos. Terminamos con xito la bsqueda cuando el elemento es encontrado.

A continuacin veremos algunos de los algoritmos de bsqueda que existen.

a)Bsqueda Secuencial A este mtodo tambien se le conoce como bsqueda lineal y consiste en empezar al inicio del conjunto de elementos , e ir atravez de ellos hasta encontrar el elemento indicado hasta llegar al final de arreglo. Este es el mtodo de bsqueda ms lento, pero si nuestro arreglo se encuentra completamente desordenado es el nico que nos podr ayudar a encontrar el dato que buscamos. ind <- 1 encontrado <- falso mientras no encontrado y ind < N haz si arreglo[ind] = valor_buscado entonces encontrado <- verdadero en caso contrario ind <- ind +1

b)Bsqueda Binaria Las condiciones que debe cumplir el arreglo para poder usar bsqueda binaria son que el arreglo este ordenado y que se conozca el numero de elementos. Este mtodo consiste en lo siguiente: comparar el elemento buscado con el elemento situado en la mitad del arreglo, si tenemos suerte y los dos valores coinciden, en ese momento la bsqueda termina. Pero como existe un alto porcentaje de que esto no ocurra, repetiremos los pasos anteriores en la mitad inferior del arreglo si el elemento que buscamos resulto menor que el de la mitad del arreglo, o en la mitad superior si el elemento buscado fue mayor. La bsqueda termina cuando encontramos el elemento o cuando el tamao del arreglo a examinar sea cero.

ALGORITMO DE LA BUSQUEDA BINARIA


encontrado <- falso primero <- 1

ultimo <- N
mientras primero <= ultimo y no encontrado haz mitad <- (primero + ultimo)/2 si arreglo[mitad] = valor_buscado entonces encntrado <- verdadero en caso contrario si arreglo[mitad] > valor_buscado entonces ultimo <- mitad - 1 en caso contrario primero <- mitad + 1

Das könnte Ihnen auch gefallen