Sei sulla pagina 1di 25

Crear un utilizando recursivos elementos a un que con otro Tarea:

programa que los metodos que le asigne los arreglo unidimencinal de forma aleatoria, y metodo presente el contenido del arreglo.

Crear un programa que transforme un decimal a un numero hexadecimal utilizando un metodo recursivo. 28/02/2012

numero

La representacion de una pila utilizando memoria dinamica se puede ser utilizando las clases vector,stack o linkedlist todas esas pertenecen

al paquete java.util y cualquiera de ellas puede crecer de forma dinamica por lo que no rekiere en ola definicion de un tamao inicial EJERCICIO:crear un programa que aplique las operaciones basicas y auxiliares de una pila utilizando la clase vector.

02/03/12

3.2 COLAS Una cola es una estructura de datos lineal que puede ser estatica o dinamica dependiendo de su implementacion en esta estructura los elementos entran por un extremo y salen por el otro y por lo que se considera una estructura de TIPO FIFO o PEPS algo que se debe contemplar en esta estructura es que cuando sale un elemento todos los demas se deben recorrer una posicion hacia delante para evitar que qeden lugares vacios. Esta estructura al igual que las pilas contempla unas operaciones basicas y las auxiliares que son:

BASICAS

AUXILIARES

Crear Insertar Extraer Recorrido Siguiente Borrar

Vacia Llena

Su representacion en memoria estatica y dinamica se pueden hacer atravez de arreglos unidimensionales, si es estatica y por medio de la clase vector en caso de ser dinamica. EJERCICIO: Crear una cola utilizando memoria estatica aplicando sus operaciones basicas y auxiliares ademas de presentar un menu con las siguientes opciones:Tamao,Insertar, Extraer,Siguiente,Mostrar,Borrar,Salir.

05/03/12 EJERCICIO:Crear un programa que construya una cola de forma dinamica utilizando la clase vector a la cual debe aplicar las diferentes operaciones basicas y auxiliares.

06/03/12 TIPOS DE COLAS Tanto las colas estaticas como las colas dinamicas pueden ser de 2 tipos colas circulares,colas dobles o bicolas estas ultimaS pueden ser con entrada o con salida restringida. Una cola circular sigue siendo una estructura de datos lineas que puede ser estatica o dinamica y qe se debe controlar el inicio y el final de la misma ya

que puede darse el caso de que el ultimo elemento sea el que esta antes del inicio.Al igual que las colas normales cuentan con las operaciones basicas y auxiliares que deben ser controladas. EJERCICIO: Utilizando un arreglo unidimensional aplique las operaciones de una cola utilizando una cola circular.

08/03/12

13/03/12

La operacion de interseccion en una lista simple se puede hacer al inicio o al final de la estructura,

Para insertar al inicio se deben seguir los pasos siguientes: 1.-Se debe crear un nuevo nodo. 2.-Si es el primer nodo de la lista se asigna cm el inicio y el final y el proceso termina . 3.-Si no es el primer nodo, en el campo siguiente del nuevo nodo se le asigna el nodo que esta marcado cm el inicio . 4.-Por ultimo al nuevo nodo se le indica que es el inicio de la lista.

13/03/12 INSERTAR AL FINAL 1.-Crear un nuevo nodo. 2.-Se asigna el ini y el final de la lista. 3.-Si no es el primer nodo, al nodo final en su campo siguiente se le asigna el

nuevo nodo, 4.-Por ultimo, al nuevo nodo se le indica que es el final de la lista.

14/03/12 LA OPERACION DE ELIMINACION.- elimina un nodo de la lista retornando el contenido de dicho nodo, aunqe en realidad, el nodo no se elimina de la memoria solo se retira la liga que lo relaciona con otro nodo, para eliminarlo del inicio de la lista, se realizan los siguientes pasos: 1.-Si la lista no esta vacia se almacena el contenido del campo de datos en una variable temporal. 2.-Si las referencias indican el inicio y el final de la estructura se encuentran en el mismo lugar, ambas referencias se transforman en nulas. 3.-Si las 2 referencias no son iguales el inicio de la lista sera igual a lo que contiene el nodo inicial en su campo de enlace.

14/03/12 ELIMINACION AL FINAL requiere de los siguientes pasos: 1.-Si la lista no esta vacia almacenar el contenido del campo datos del nodo final en una variable temporal. 2.-Si las referencias de inicio y fin se encuentran en el mismo lugar se transforman en nullas. 3.-si las referencias no son iguales se tiene que localizar el nodo anterior al final, almacenando ese nodo en un nodo temporal. 4.-Al nodo anterior asignarle en su campo de enlace el valor del nullo. 5.-Por ultimo indicar, que la referencia final es igual al nodo anterior.

14/03/02 EL RECORRIDO DE UNA LISta simple solo se puede realizar en un solo sentido de la referencia inicial a la referencia final ya que solo un nodo conoce quien se encuentra

despues de el pero no qien esta antes de el, para esto se realiza el siguiente procedimiento: 1.-Si la lista no esta vacia, asignar el nodo inicial en un nodo temporal. 2.-Comparar si el nodo temporal en su campo siguiente es diferente de nullo, de ser asi se continua el recorrido en la lista asignandole al nodo temporal el contenido del mismo nodo pr en su campo siguiente. 3.-Cada que se repite el paso 2, se presenta el contenido del campo de datos hasta que se llega al final de la lista.

15/03/12

BUSQUEDA.- esta operacion permite localizar un elemento que se encuentra en la estructura desde la referencia inicial hasta la referencia final o encontrar el elemento buscado para este procedimiento se utilizan los pasos del procedimiento de la operacion anterior, con un cambio en la condicion comparandoce el elemento buscado es diferente del contenido del nodo actual y si es asi la busqeda continua hasta encontrar el elemento o la lista se termina retornando cm resultado la posicion donde se encuentra el elemento buscado.

TAREA: Crear una lista simple qe aplique las operaciones de una pila. crear una lista simple que aplique las operaciones de una cola.

16/03/12

20/03/12

Una lista doble.- estructura de datos lineal dinamica, que se forma de un conjunto de elementos llamados nodos, donde cada nodo es un objeto compuesto que se integra de 3 partes, UN CAMPO DATO Y DOS REFERENCIAS y tanto el primer nodo como el ultimo a puntan al nullo y se representan de la siguiente manera:

Ejercicio: Crear una clase llamada nodoD que se encarge de definir 3 elementos el primero para almacenar un entero y se llama dato, el segundo y tercero son las referencias anterior y siguiente creadas a partir de la misma clase y ademas agrege un constructor que se encarge de asignarle un valor al campo dato segun el argumento recibido e inicializar las referencias como nulas. Las operaciones de una lista doble son las mismas que de una lista simple que son como operaciones basica: insertar, eliminar, recorrido y busqueda, como operaciones basicas y como operaciones auxiliar: vacia, ademas para este tipo de listas se pueden hacer por el final de la estructura ya que se cuenta con las referencias para ir en cualquier sentido de la lista. Pasos para la inserccion al inicio: 1.- Crear un nuevo nodo. 2.-Si es el primer nodo de la lista se asigna a las referencias inicio y final y el proceso termina. 3.-SI no es el primer nodo de la lista en su campo de enlace siguiente se le asigna el nodo considerado como el inicio. 4.-EL nodo considerado como el inicio en su campo anterior ahora apunta hacia el nodo nuevo. 5.- Al nuevo nodo se le indica que es el inicio de la lista. Insertar al final de la lista: 1.-Crear un nuevo nodo. 2.Eliminar al inicio: 21/03/12

LISTAS Circulares

:es una estructura de datos lineal y dinmica, que se forma de un conjunto de elementos llamados nodos ya sean simples o nodos,

controlada con un inicio y un final y en donde ninguno de los nodos apunta a nullo, ya que si se utilizan listas simples, el nodo siguiente despus del final, es el inicio y si se utilizan listas dobles el nodo siguiente despus del final es el inicio, y el anterior despus del inicio es el final.

UNIDAD IV Estructuras no Lineales


Las estructuras no lineales son por lo general estructuras dinamicas que requieren de espacion de memoria segn el numero de datos que almacenan y que dichos datos no se encuentran almacenados de forma secuencial ya que se distribuyen en cuanquier parte de la memoria, este tipo de estructuras pueden ser arboles o grafos. 4.1 Arboles La estructura de un rbol indica la ruta que se debe seguir en la localizacin de un cierto dato, elemento o incluso dispositivo, ya que su principal aplicacin la podemos encontrar en internet, que se encuentra basada en la estructura de un rbol o un grafo ya que cada uno de sus nodos contienen informacin de los nodos que se pueden comunicar a el y obtener la informacin de los servidores conectados a dichos nodos. 4.1.1 Concepto de rbol. Es una estructura de datos homogenea, dinamina y no lineal en la que cada nodo, puede contener varios nodos posteriores a l pero solo puede tener un nodo anterior. Se consideran dinmicos ya que su estructura puede cambiar durante la ejecucin del programa y no lineales porque cada nodo del rbol puede contener varios nodos dependiente de l. La estructura de un rbol se forma de nodos y arcos en donde el primer nodo del rbol recibe el nodo de raz, del cual se desprende los nodos interiores, y de estos los nodos hoja que son los nodos que se encuentran al final del rbol.
raiz

Nodo Interior

Arco

hoja

Adems de los elementos anteriores se deben comprender algunos otros conceptos que se clasifican en 3 grupos que son: En relacin con otros nodos:

Padre Hijo Hermano


En cuanto a la posicin dentro del rbol:

Raz Interior Hoja


En relacin a su tamao:

Orden Grado Nivel Altura Peso Camino Longitud del camino Rama

En relacin a su tamao: El Orden, es el nmero de potencial de hijos que puede tener un nodo padre. El Grado, es el nmero mximo de hijos que tienen un nodo en particular. El Nivel, es el nmero de arcos que deben ser recorridos+1 para llegar a un nodo determinado. La Altura, es el nmero de niveles que debe pasar para llegar al final del rbol o de una ramificacin segn sera el caso. El Peso, es el nmero de nodos del arco sin contar la raz. El Camino, es la serie de nodos, que tiene que pasar para llegar a un nodo particular siempre comenzando desde la raz. La longitud del camino, es el nmero de arcos que debe que cursar + 1 para llegar a un nodo en particular. La Rama, es el camino que se forma desde el nodo raz, hasta un nodo hijo. 4.1.2 Clasificacin de los arboles. Se clasifican de acuerdo al nmero de hijos o nodos como se muestra en la siguiente tabla: -Arboles Binarios -Arboles Multicamino B, B+,B*,R,2-4

Distintos Similares Equivalentes Completo

Un arbol binario es una estructura de datos homogenea, dinamica y no lineal en donde cada nodo le pueden seguir como 2 nodos maximos como hijos, los cuales se le reconocen como hijo izquierdo y como hijo derecho. Un Arbol Binario Distinto: es aquel que tiene su estructura completamente diferente a la del otro arbol binario, ejemplo:

Los arboles binarios Similares, son aquellos que tienen la misma estructura pero sus datos son diferentes. Los arboles binarios son equivalentes cuando su estructura y datos son iguales a la del otro arbol. 4 6 5 6 4 5

Un rbol binario es equilibrado siempre y cuando cumpla con la siguiente propiedad: La diferencia entre la altura de su rbol izquierdo en su campo derecho, debe ser de cero o uno Un rbol binario es completo cuando todos sus nodos hoja se encuentran en el mismo nivel. 26/03/12 Numero de nodos de un rbol binario completo. 2(altura)-1

Un rbol binario multicamino es una estructura de datos homognea, dinmica y no lineal, en donde a cada nodo le pueden seguir una cantidad de n de nodos hijos y cada hijo se distingue por el nmero de hijo que le corresponde para este tipo de rboles se utiliza un arreglo o una estructura dinmica dentro de cada nodo del rbol que le ayuda controlar cuantos nodos hijos dependen de el. 4.1.3 Operaciones bsicas sobre rboles binarios. Las operaciones bsicas de un rbol binario son 5: -Creacin: para crear un rbol binario se requiere de una serie de nodos, donde cada nodo es creado a partir de una clase auto referenciada y cada nodo se puede integrar de 3 o 4 campos, cuando el nodo se integra de 3 campos contiene, 2 referencias llamadas izquierdo y derecho y un campo de datos que almacena la informacin del nodo, cuando se integra en 4 campos contiene 3 referencias padre, izquierdo y derecho, adems del campo de datos que almacena los valores del nodo. Las referencias son las que le permite a cada nodo integrarse dentro de la estructura del rbol ya sea para reconocer quienes son sus hijos y quien es su padre (en el caso de 4 campos). Dato Izq. Der

Padre DATOS IZQ DER

Ejercicio: crear una clase auto referenciada para poder construir nodos para un rbol binario con 3 campos y que permita almacenar elementos enteros. 28/03/12 -Insercin: La operacin de insercin permite agregar un nuevo nodo hoja dentro del rbol pero antes de agregarlo se debe contemplar la forma en cmo se organiza los nodos de un rbol, al primero se le conoce cm la raz del cual se desprende los nodos intermedios y los nodos hoja, el segundo elemento que

entra en el rbol tiene dos opciones para la insercin lado izquierdo o del lado derecho para determinar cul de los lados se puede entrar, se determina en base al valor del campo del dato del nuevo nodo si el valor del nuevo nodo es mayor que el nodo actual se inserta el lado derecho y si es menor se inserta el lado izquierdo. Organizando la estructura de datos para tener un rpido acceso o bsqueda de un dato. Algo ms que se debe tomar en cuenta es que no pueden existir nodos con datos repetidos por lo que antes de la insercin de un nodo se debe revisar que el nodo no exista en el rbol antes de sdeterminar el nodo donde se debe de insertar. Ejercicio: Crear un rbol binario con los siguientes caracteres: H,G,A,M,R,O,Z,,L,Z. H G A L O Ejercicio: Crear un arbol binario con todas las letras de su nombre, nombre completo utilizando letras mayusculas y minusculas. Jocelyn Montserrat Crdenas Sandoval Tarea: Crear un arbol binario con todas las palabras de este enunciado escritas todas con puras letras minusculas para entregar el dia de maana en una hoja blanca. -Eliminacin: 18/04/12 Puede presentar 3 formas: La eliminacin de un padre con un hijo o un subrbol y eliminacin de un padre con dos padres o dos hijos en dos subrboles. En la eliminacin de un padre es una operacin simple solo es necesario encontrar el nodo hoja e indicarle a su padre ya sea en la parte izquierda o derecha que debe apuntar a nulo. M R Z

En la eliminacin de un padre con un hijo en un subrbol tambin se considera una operacin simple solo se requiere conocer quin es el nodo anterior al padre y establecer la relacin con el nodo hijo que se quedara sin padre. En la eliminacin de un padre con 2 hijos o dos subrboles no es tan simple como las anteriores ya que la eliminacin del padre genera dos hijos o dos subrboles que ahora ya no contienen padre y que no se pueden relacionar con el nodo anterior al eliminarlo y que se rompera la integridad de los arboles binarios para solucionar este problema se tienen dos posibles soluciones una eliminacin por fusin o una eliminacin por copeado. La eliminacin por fusin genera un rbol nuevo de los dos subrboles o hijos que se quedaron sin padre y el nodo raz del nodo subrbol ocupa el lugar del nodo eliminado para funcionar dos subrboles se debe realizar los siguientes pasos: 1.-Dentro del subrbol izquierdo encontrar el nodo mayor que por la naturaleza de los arboles binarios es el que est ms a la derecha del subrbol izquierdo y que no contiene hijo en su parte derecha. 2.- El nodo mayor encontrado se transforma en el nodo padre del subrbol derecho, estableciendo su campo de enlace en donde el nodo padre es el nodo mayor. 3.-El nuevo rbol formado ocupa el lugar del nodo que se quiere eliminar. 23/04/12 Eliminacin por Copiado: se encarga de eliminar el dato del nodo que se quiere borrar cambindolo por el dato del nodo sucesor inmediato. Para localizar el nodo sucesor del nodo que se quiere eliminar la primera que se debe hacer es mover el nodo a la izquierda el nodo que se pretende eliminar y al avanzar la ms posible a la derecha almacenando el nodo sucesor y el anterior al sucesor posteriormente reemplazar el dato del nodo que se quiere eliminar por el dato del nodo sucesor, por ltimo el anterior al sucesor en su parte derecha se le debe asignar como nula. 24/04/12 -Recorrido: es el proceso de visitar cada uno de los nodos de datos presentando su contenido lo que representa una forma lineal de presentar el contenido del arbol. Uno de los recorridos que se le puede aplicar a un arbol binario son el recorrido en amplitud y el recorrido en profundidad. El recorrido en amplitud, recorre el arbol nivel por nivel visitando los nodos de izquierda a derecha, para esta

operacin se requiere de una estructura tipo fifo que ayude en el almacenamiento temporal de cada nodo antes de su presentacion . Los pasos para aplicar un recorrido en amplitud son los siguientes:

1) Asignar el nodo raiz en un nodo temporal. 2) Crear una estructura tipo FIFO. 3) Agregar el nodo temporal a la estructura FIFO. 4) Generar un ciclo que repita los pasos siguientes mientras la estructura
FIFO no este vacia.

5) Al nodo temporal asignarle el nodo que se puede extraer de la estructura


FIFO y presentar su contenido.

6) Si el nodo temporal en su parte izquierda es diferente de nulo agregar a


la estructura de tipo Fifo el nodo que se encuentra al lado izquierdo del nodo temporal.

7) Si el nodo temporal de su parte derecha es diferente de nulo agregar a la


estructura Fifo el nodo que se encuentra a la derecha del nodo temporal. Recorrido en Profundidad: este proceso recorre el rbol lo ms lejos posible hacia la izquierda e ir presentando el ultimo nivel presentado para regresar al nivel anterior para presentar su contenido y avanzar hacia la derecha para repetir el proceso, este procedimiento se debe repetir hasta que todos los nodos del rbol sean visitados y presentados para esta operacin se requiere una estructura tipo Lifo para un almacenamiento temporal de los nodos antes de su presentacin. Los pasos para el recorrido en Profundidad son los siguientes:

1) Asignar el nodo raiz a un nodo temporal. 2) Crear la estructura tipo Lifo. 3) Agregar el nodo temporal a la estructura Lifo. 4) Generar un ciclo que repita los siguientes pasos mientras que la
estructura no este vaca.

5) El nodo temporal asignarle el nodo que se puede extraer de la


estructura Lifo y presentar su contenido.

6) Si el nodo temporal en su parte derecha el diferente de nulo agregar


a la estructura lif0o el nodo que se encuentra a la derecha del nodo temporal.

7) Si el nodo temporal en su parte izquierda es diferente de nulo


agregar a la estructura lifo el nodo que se encuentra a la izquierda del nodo temporal. El recorrido tambin se puede desarrollar de tres formas distintas implementando recursividad, ya sea entre orden, imporden o postporden lo que no requiere ninguna estructura adicional solamente aplicar la llamada recursiva que sean necesarias recibiendo como argumento el nodo que se quiere presentar. Tarea: Investigar El objetivo 4.2 junto con su subtema 4.2.1 y 4.2.2 e equipo de 2 personas para de maana en 8 dias. Tarea para maana metodo que aplica el recorrido en amplitud.

25/04/12 -Balanceo: Sabemos que un arbol binario se encuentra balanceado cuando la diferencia entre la altura de su arbol izquierdo y el sub arbol derecho es cero o uno. Existen varias tecnicas para lograr el balanceo de un arbol, dichas tecnicas se pueden clasificar en dos grupos, las que balancean en el momento del que nodo ingresa al arbol y las que utilizan un nuevo arbol o una extructura adicional para balancear el arbol. La primera tecnica reestructura constantemente el arbol lo cual requiere un procedimiento adicional y mayor tiempo en el momento de insertar un nuevo nodo, el segundo grupo de tecnicas realizan el balance e n 2 procesos, el primero ordena los datos del arbol en forma asendente ya sea en el mismo arbol o en una estructura adicional y el segundo proceso genera un nuevo arbol con los datos ordenados lo que garantizara el arbol se cree balanceado. Utilizando el segundo grupo de tecnicas y como estructura adicional para el almacenamiento temporal de los nodos o de los datos utilizando una lista ligada el balanceo requiere de los siguientes pasos:

1) Transformar el arbol en una lista ordenada aplicando recursividad.

a) El metodo debe de recibir como argumento la raiz dentro de un nodo


temporal.

b) Si el nodo temporal es igual a nulo el metodo se termina con la


desendencia return.

c) Aplicar recursividad mandando como argumento el nodo que se


encuentre a lado izquierdo del nodo temporal.

d) Almacenar dentro de la lista el dato dentro del nodo temporal. e) Aplicar recursividad mandando como argumento el nodo que se
encuentra a lado derecho del nodo temporal.

2) Para crear un nuevo rbol a partir de la lista ordenada realizar los


siguientes incisos:

a) El mtodo debe recibir como argumentos la lista de la posicion inicial


y la posicion final de la lista.

b) Mientras que la posicion inicial sea menor o igual a la posicion final,


realizar los siguientes incisos sino el proceso termina.(Condicion)

c) Encontrar la mitad de la lista sumando la posicion inicial y final


dividiendola entre dos usando solo partes enteras.

d) Agregar al nuevo arbol el dato que se encuentra en la mitad de la


lista encontrada.

e) Aplicar recursividad mandando como argumentos, la lista, la posicin


inicial y la mitad encontrada menos uno.

f) Aplicar recursividad mandando como argumento , la lista, la mitad de


la lista encontrada menos uno y la posicin final 17/04/12 Ejercicio: Crear un arbol binario con los siguientes datos: 5.2,9.7,1.4,-2.5,0.5,-0.5,8.2,5.0,2.3,9.7,2.5,0.9,0.5,4.3 5.2 1.4 -2.5 0.5 5.0 2.3 9.7 8.2

-0.5 0.9

2.5 4.3

Pasos para insertar un nuevo nodo dentro de un rbol binario: 1) Crear el nuevo nodo. 2) Si el rbol se encuentra vaco el nuevo nodo se asigna como la raz. 3) Si no se encuentra vaco se revisa si el nuevo nodo existe, de ser as el proceso termina. 4) Si el nuevo nodo no existe en el rbol, se busca el camino y el nodo del cual depender el nuevo nodo. 5) Determinar si el nuevo nodo se inserta, al lado izquierdo o al lado derecho. 6) Por ultimo establecer la nueva relacin entre el nuevo nodo y el nodo que ser considerado como su padre, esto en el caso de utilizar nodos con cuatro campos. 5,4,3,8,6,7,12 26/04/12 Ejercicio: Crear un arbol binario utilizando la clase treeset para almacenar elementos enteros.

27/04/12 Ejercicio: Crear un rbol binario utilizando un TDA que contenga los siguientes datos, No. De control, Nombre y Promedio, para el cual debe aplicar las operaciones insertar ,eliminar y recorrido.

02/05/12 Unidad V Metodos de Ordenamiento 5.1 Algoritmos de ordenacion interna La ordenacion interna Es conocida como arreglos recibe este nombre ya que los elementos que se pretenden organizar se encuentran en la memoria principal de la computadora estos ordenamientos pueden ser asendentes o desendentes y la eficiencia de los algoritmos depende en gran medida de la cantidad de datos que se prentenden ordenar y el metodo que se quiera ampliar. Los algoritmos mas comunes para la ordenacin interna son: Mtodo de la Burbuja.- es un mtodo de ordenacion por intercambio de metodos que consiste en comparar dos elementos adyacentes para determinar

si se realiza un intercambio entre ellos dependiendo del tipo de ordenamiento que se requiere. Este metodo es el mas simples pr el menos eficiiente ya que la cantidad de intercambio o posibles comparaciones depende de la cantidad de datos que depende del arreglo, por ejemplo: Si se tiene una estructura de 100 elementos se tienen que realizar 9900 comparaciones y la misma cantidad de posibles intercambios esto para asegurarse que el arreglo queda ordenado. Los pasos para este metodo de ordenamiento son:

1) Generar un ciclo que inicie desde uno hasta la cantidad de elementos del
arreglo.

2) Generar un segundo ciclo dentro del anterior que inicie desde cero hasta
la cantidad de elementos -2.

3) Realizar la comparacion entre el elemento del indice del elemento del


segundo ciclo y el adyacente a el para determinar si se realiza un intercambio o no.

4) Realizar el intercambio entre los elementos adyacentes si el paso


anterior resulta verdadero. Sintaxis: Public void Burbuja1(int tipo) { Int x,aux; For(x=1,x<=arr.length; x++) For(ind=0, ind<arr.length-2; ind ++) If(tipo==1) If(arr[ind]>arr[ind+1]) { Aux=Arr[ind]; Arr[ind]=arr[ind+1]; Arr[ind+1]=aux; } }

Else If(arr[ind]<arr[ind+1) { Aux=arr[ind]; Arr[ind]=Arr[ind+1]; Arr[ind+1]=aux; } }

Metodo de Quicksort.- Ordena en un tiempo proporcional de elevado al cuadrado en el peor de los casos o no por el logaritmo de n en el peor de los caso. Los pasos para aplicar el ordenamiento Quick son los siguientes: 1) Elegir un elemento del arreglo al que llamaremos pibote. 2) Debe acomodar los elementos del arreglo de tal forma que de los que esten al lado izquierdo del pibote sean menores y todos los que esten al lado derecho sean mayores. 3)Cuando los elementos del lado izquierdo y derecho no cumplen la condicion se realiza el intercambio. 4) El proceso se repite de forma recursiva mandando primero los elementos del lado izquierdo del pibote y posterior mente los del lado derecho Nota: se recomienda que la seleccin del pibote sea el elemento central del arreglo y que las posiciones inicio y final del arreglo sean recibidas como argumento junto con el arreglo. Public void Quicksort () { Quicksort (0, arr.length-1, tipo) } Private void Quicksort(int ini , int fin, int tipo)

{ Int izq , der , cen ,pivote,aux; Izq=ini; Der=fin; Cen=(ini+fin)/2; Pivote=arr[cen]; While(izq<=der) { While(arr[izq]<pivote) Izq ++; While(arr[der]>pivote) Der --; If(izq<=der) { Aux=arr[izq]; Arr[izq]=Arr[Der]; Arr[der]=aux; Izq ++; Der --; } } If(ini<der) Se aplica recursividad a la parte izquierda Quicksort(ini,der,tipo); If(izq<fin) Quicksort(izq,fin,tipo); }

Pasar el otro programa-. De ayer de burbuja 2; 03/05/12 Shellsort.Para determinar el tamao del salto e incremento lo primero que se debe hacer es que el salto sea igual a la mitad del tamao del arreglo y posterior mente ir reduciendo a la mitad el incremento hasta que sea un nulo. Para aplicar este mtodo se deben seguir los siguientes pasos:

1) Generar un ciclo que se encargue de controlar el tamao del


incremento

a) Debe iniciar con la mitad del tamao del arreglo. b) Se debe repetir mientras el incremento sea mayor a cero. c) El cambio del incremento se elige entre dos opciones num1 o la
divisin del incremento anterior entre 2.

2) Un segundo ciclo dentro del anterior controla el nmero de


comparaciones que se deben hacer segn el tamao del incremento.

a) El control de este ciclo debe inicial con el incremento


generado anteriormente.

b) El ciclo debe continuar mientras el control del ciclo sea


menor que el tamao del arreglo.

c) El control del ciclo debe cambiar de uno en uno. 3) Un tercer ciclo dentro del segundo controla en que momento se
detienen las comparaciones o se hacen los posibles intercambios.

a) El control de este ciclo debe iniciar con el valor del ciclo


anterior.

b) Mientras que el control del ciclo sea mayor o igual al control


del primer ciclo y el elemento de la posicion que controla este ciclo menos el incremento sea mayor que el elemento de la posicion que controla este ciclo realice los intercambio entre estas posiciones.

c) El control de este ciclo se decrementa con el valor del


incremento.

07/05/12 Radix.- es un metodo de ordenacion por distribucion que procesan los numeros en forma individual y los organiza segn la posicion que deben ocupar ya sea por los digitos para datos numericos y por la letras los valores alfabeticos, los datos se pueden procesar en dos formas distintas de derecha a izquierda o de izquierda a derecha, la recomendacin es que para los digitos sea de derecha a izq y para las letras de izquierda a derecha de estas dos formas la mas comun en por medio de los digitos lo cual se puede implementar por el digito menos significativo o por el digito mas significativo, por el digito menos significativo se recorre el numero de derecha a izquierda y por el digito mas significativo se recorre de izquierda a derecha. De estas ultimas alternativas la mas utilizada en el metodo radix es el LSD que se encarga de colocar los datos en una de 10 colas disponibles en donde cada una de ellas controla un digito en particular y se colocan en ellas dependiendo del digito que se ente procesando, al terminar con todos los datos se regresan a la estructura original comenzando por la cola 0 hasta la cola que controla el digito 9, este proceso se debe repetir hasta que se recorra el dato con mayor cantidad de digitos. El procedimiento para aplicarlo es el siguiente: 1) Determinar cual en la mayor cantidad de digitos de los datos que estan en el arreglo. 2) Crear un arreglo de colas que permita controlar cada uno de los 10 digitos. 3) Crear cada posicion del arreglo como un objeto para que permita almacenar mas de un arreglo en la posicion de la cola. 4) Generar un ciclo que controle el digito que se esta procesando y el factor que permite encontrar dicho digito. a) Inicializar el numero del digito y el factor en un 1. b) Mientras que el digito sea menor o igual a la cantidad de digitos se continua dentro del ciclo. c) El numero de digitos debe incrementar de uno en uno y el factor del digito debe multiplicarse por 10. 5) Crear un segundo ciclo donde se encuentra dentro del anterior que se encarga de recorrer todo el arreglo original pasando los datos del arreglo a la cola correspondiente. a) El control de este ciclo debe comenzar de cero.

b) Mientras sea menor al tamao del arreglo continua en el ciclo. c) El control se incrementa de uno en uno. 6) Generar un nuevo ciclo que se encuentra dentro del primero y que controle el paso de los datos de las colas al nuevo arreglo. a) El control de este ciclo se inicia en 0 al igual que el indice que controla el arreglo destino. b) Mientras que el control de este ciclo sea menos a 10 continua en el. c)El control del ciclo se incrementa en uno en uno. 7) Dentro del ciclo anterior se genera un nuevo ciclo que se encarga de transferir los datos de las colas al arreglo original evaluando la condicion mientras la cola no este vaca.

11/05/12

Mezcla natural: el original y dos archivos auxiliares en donde se debe de realizar una particion de maxima longitud es decir los elementos que se insertan en el primer archivo auxiliar siempre y cuando continuen ordenados(el elemento nuevo sea mayor que el elemento insertado anteriormente cuando esta operacion ya no se cumple se cambia de archivo auxiliary se repite nuevamente la operacion

17/05/12

UNIDAD 6

Metodos de Busqueda

La busqueda es una de las operaciones mas importantes del manejo del la estructura de datos ya que lo importante para una empresa es poder recuperar rapidamente la informacion que tiene almacenada. La bsqueda se puede realizar sobre estructuras previamente ordenadas o estructuras que se encuentren en desorden la recomendacion es que la estructura se encuentre previamente ordenada ya que eso facilitara hara que la busqeda sea un proceso ms eficiente. La bsqueda puede ser aplicable de manera interna o de manera externa, interna cuando los datos se encuentren en la memoria principal y externa cuando los datos se encuentren en un dispositivo de almacenamiento secundario. Los mtodos de bsqueda que se analizaran para ambos casos son bsqueda secuencial, bsqueda binal y bsqueda hash.

6.1 Bsqueda Secuencial.


Consiste en revisar la estructura desde el inicio para buscar la posicion donde se encuentra almacenada el dato que se quiere buscar o presentar la serie de datos relacionados a l, este proceso de busqueda puede concluir con un exito si lo que buscamos es encontrado o en un fracaso sino se encuentran los datos y se recorre completamente la estructura.

6.2 Bsqueda Binaria


Se encarga de dividir el total de los elementos entre 2 comparando la posicin central para saber si el igual al elemento que se est buscando sino lo es se determina si la bsqueda continua del lado izquierdo cuando el nmero sea menor o del lado derecho cuando el nmero que se est buscando es el mayor; este proceso se debe repetir siempre y cuando la divisin de la estructura entre dos sea posible o hasta que se encuentre el elemento deseado. Nota: este mtodo de bsqueda solo es funcional si los elementos se encuentran previamente ordenados.

Potrebbero piacerti anche