Tarea Tarea Tarea Nº 3
Estructura de Datos
Algunos Ejercicios son Tomados Tomados del Libro Estructuras Es tructuras de DatosCapitulo 6 de Joyanes Aguilar Nombre: Andrés uerra !edina Curso: " A #ec$a: %&'()'%)(6 EJE*C+C+, (. /Cu0l es la di1erenci di1erencia a entre ordenaci2n ordenaci2n por intercambio intercambio y ordenaci2n por el método de la burbuja3 El algoritmo del ordenamiento por intercambio es uno de los más sencillos, pero con el rendimiento realmente bajo, se basa en la idea de buscar cada vez el menor elemento del conjunto y ubicarlo al principio del arreglo, repitiendo este proceso proceso sin incluir el primero de los datos que q ue ya se encuentra ordenado, hasta llegar a un conjunto de un elemento que se encuentra ya ordenado. El algoritmo por ordenamiento de urbuja es u no de los más conocidos y más usado por programadores, consiste en comparar pares de elementos adyacentes en un !rray y si están desordenados intercambiarlos hasta que est"s ordenados. El rendimiento de este algoritmo es mucho más e#caz que el algoritmo de intercambio. %. e desea eliminar todos los n4meros duplicados de una lista o 5ector array7. 8or ejemplo9 si el array toma los 5alores ; (( < & (( ; " &
$a de cambiarse a ; (( < & "
Escribir un método =ue = ue elimine los elementos duplicados de un array. array.
public void eliminar$e eliminar$epetidos%&' petidos%&' int qtd ( )* +or% int i ( ) * i original.length * i-- & ' boolean eiste ( +alse* +or% int j ( ) * j qtd * j-- & ' i+% unicos/ j 0 (( original/ i 0 & ' eiste ( true* brea1* 2 2 i+% eiste & ' unicos/ qtd-- 0 ( original/ i 0* 2 2 unicos ( !rrays.copy4+% unicos , qtd &* 2
Tarea Tarea Nº 3
Estructura de Datos
". >n 5ector contiene los elementos mostrados a continuaci2n. Los primeros dos elementos se $an ordenado utili?ando un algoritmo de inserci2n. /Cu0l ser0 el 5alor de los elementos del 5ector después de tres pasadas m0s del algoritmo3 " (" @ %& & %" <@ &@
pac1age insercsion* import java.util.5* public class 6nsercsion ' 7canner leer ( ne8 7canner%7ystem.in&* public static void main%7tring/0 args& ' int a/0('3 ,93, : ,;< ,=< ,;3 ,>:, <:2* 6nsercsion op( ne8 6nsercsion%&* op.ord6nsercion%a&* 2 public void ord6nsercion %int /0 a& ' 7ystem.out.println%?el vector es@?&* +or %int i ( )* i a.length* i--& ' 7ystem.out.print%a/i0-?AA?&* 2 int i, j* int au* +or %i ( 9* i 3* i--& ' B5indice j es para eplorar la sublista a/iC90..a/)0 buscando la posicion correcta del elemento destino5B j ( i* au ( a/i0* BB se localiza el punto de inserciDn eplorando hacia abajo 8hile %j ) FF au a/jC90& 'BB desplazar elementos hacia arriba para hacer espacio a/j0 ( a/jC90* jCC* 2 a/j0 ( au* 2 7ystem.out.println%??&* 7ystem.out.println%?el vector ordenado es@?&* +or %int 1 ( )* 1 a.length * 1--& ' 7ystem.out.print%a/10-?AA?&* 2 2 2 El vector quedarGa asG @ 3AA:AA93AA;
:AA<:AA . >n array contiene los elementos indicados m0s abajo. >tili?ando el algoritmo de ordenaci2n $ell9 encuentre las pasadas y los intercambios =ue se reali?an para su ordenaci2n. @ " (; 6 ) (6 (@ <; (( ;
Tarea Tarea Nº 3
Estructura de Datos
pac1age algoritmoshell* import java.util.7canner* public class !lgoritmo7hell ' public static void 7hellsort %int/0 a& ' int salto(a.lengthB;*BBsalto es igual a el tamaHo del vector dividido para dos int ( ), y ( )* 8hile%salto(9&'BBmientras el tamaHo del salto sea mayor a 9 se realizara lo siguiente +or%int rec(salto*reca.length*rec--&'BBpara el recorrido igual al salto* mientras recorrido sea menor al tamaHo del vector* el recorrido aumenta de 9 en 9 int temp(a/rec0* int j(recCsalto* 8hile%j()FFa/j0temp&' a/j-salto0(a/j0* j(jCsalto* -( 9* 2 a/j-salto0(temp* 2 saltoB(;* y -(9* 2 7ystem.out.print+%?In es igual a@ Jd?,&* 7ystem.out.print+%?Iny es igual a@ Jd?,y&* 2 public static void imprime%int /0a&' 7tring sal(??* +or%int i()*ia.length*i--&' i+%a/i09)& sal-(? ?-a/i0-? ?* else sal-(a/i0-? ?* 2 7ystem.out.println%sal&* 2 public static void main %7tring/0 args& ' int a/0(':, =3, 9K, L, =), 9L, 9:, >K ,99 ,K2* 7hellsort%a&* 7ystem.out.println%?InMector ordenado?&* imprime%a&* 2 2 $ealizD@ 9; cambios $ealizD@ 3 pasadas
Tarea Tarea Nº 3
Estructura de Datos
&. upongamos =ue se tiene una secuencia de n n4meros =ue deben ser clasicados: (. >tili?ando el método de $ell9 /cu0ntas comparaciones y cu0ntos intercambios se re=uieren para clasicar la secuencia si B ya est0 clasicado3
pac1age algoritmoshell* import java.util.7canner* public class !lgoritmo7hell ' public static void 7hellsort %int/0 a& ' int salto(a.lengthB;*BBsalto es igual a el tamaHo del vector dividido para dos int ( ), y ( )* 8hile%salto(9&'BBmientras el tamaHo del salto sea mayor a 9 se realizara lo siguiente +or%int rec(salto*reca.length*rec--&'BBpara el recorrido igual al salto* mientras recorrido sea menor al tamaHo del vector* el recorrido aumenta de 9 en 9 int temp(a/rec0* y -(9* int j(recCsalto* 8hile%j()FFa/j0temp&' a/j-salto0(a/j0* j(jCsalto* -( 9* 2 a/j-salto0(temp* 2 saltoB(;* 2 7ystem.out.print+%?In es igual a@ Jd?,&* 7ystem.out.print+%?Iny es igual a@ Jd?,y&* 2 public static void imprime%int /0a&' 7tring sal(??* +or%int i()*ia.length*i--&' i+%a/i09)& sal-(? ?-a/i0-? ?* else sal-(a/i0-? ?* 2 7ystem.out.println%sal&* 2 public static void main %7tring/0 args& ' int a/0('9,;,3,=,<,L,K,:,>,9),99,9;2* 7hellsort%a&* 7ystem.out.println%?InMector ordenado?&* imprime%a&*
Tarea Tarea Nº 3
Estructura de Datos
2 2 7e requieren %n5;& - ; comparaciones si el n es par y se requiere %n5;& - 3 si n es impar y no se realiza ningn intercambio. B est0 en orden in5erso3
7e requieren %n5;& - ; comparaciones si el n es par y se requiere %n5;& - 3 si n es impar, en el caso de los intercambios entre menos datos se tengan menos intercambios hará, pero con+orme aHadamos datos a nuestro arreglo crecen los intercambios de una manera bastante alta. 2. *epetir el paso ( para el método de Quicksort.
pac1age ordenamientoquic1sort* public class quic1sort ' int ( ), y ( )* public void quic1sort%int !/0, int izq, int der& ' int pivote ( !/izq0* BB tomamos primer elemento como pivote int i ( izq* BB i realiza la bsqueda de izquierda a derecha int j ( der* BB j realiza la bsqueda de derecha a izquierda int au* 8hile %i j& ' BB mientras no se crucen las bsquedas 8hile %!/i0 ( pivote FF i j& ' y (- 9* i--* BB busca elemento mayor que pivote 2 8hile %!/j0 pivote& ' y (- 9* jCC* BB busca elemento menor que pivote 2 i+ %i j& ' BB si no se han cruzado au ( !/i0* BB los intercambia !/i0 ( !/j0* !/j0 ( au* -( 9* 2 2 !/izq0 ( !/j0* BB se coloca el pivote en su lugar de +orma que tendremos !/j0 ( pivote* BB los menores a su izquierda y los mayores a su derecha i+ %izq j C 9& ' quic1sort%!, izq, j C 9&* BB ordenamos subarray izquierdo 2 i+ %j - 9 der& ' quic1sort%!, j - 9, der&* BB ordenamos subarray derecho
Tarea Tarea Nº 3
Estructura de Datos
2 2 public void imprimir%int !/0&' +or %int 1 ( )* 1 !.length* 1--& ' 7ystem.out.print%!/10&* 2 7ystem.out.println%? ?&* 7ystem.out.print+%?Oomparaciones totales @ Jd?,y&* 7ystem.out.print+%?Oambios totales @ Jd?,&* 2 2 Ouando se encuentra ordenado hace una sola pasada y ningn intercambio, por eso quic1sort es uno de los mejores algoritmos de ordenaciDn. Ouando se encuentra en orden inverso se realiza T%n&(;T%nB;&- nC9 donde T es el pivote y para el numero de intercambios nos basamos en el orden del quic1sort T%n& C )%n lg n&. 8*,LE!A (. Pn m"todo de ordenaciDn muy simple, pero no muy e#ciente, de elementos x 9, , 3,... x en orden ascendente es el siguiente@ x Qaso 9@ Rocalizar el elemento más pequeHo de la lista x 9 a x n* intercambiarlo con x 9. Qaso ;@ Rocalizar el elemento más pequeHo de la lista x ; a x n, intercambiarlo con x ;. Qaso 3@ Rocalizar el elemento más pequeHo de la lista x 3 a x n, intercambiarlo con x n. En el ltimo paso, los dos ltimos elementos se comparan e intercambian, si es necesario, y la ordenaciDn se termina. Escribir un programa para ordenar una lista de elementos, siguiendo este m"todo. ; x
n
%. 7e trata de resolver el siguiente problema escolar@ dadas las notas de los alumnos de un colegio en el primer curso de bachillerato en las di+erentes asignaturas %<, por comodidad&, se trata de calcular la media de cada alumno, la media de cada asignatura, la media total de la clase y ordenar los alumnos por orden decreciente de notas medias individuales. Nota@ utilizar como algoritmo de ordenaciDn el m"todo 7hell. &. Qrograma Sava que lea 9) nmeros enteros por teclado y los guarde en un array. Oalcula y muestra la media de los nmeros que est"n en las posiciones pares del array. eclara un array tipo int %entero& denominado numerodecoches que contenga ;= variables. eclara una variable tipo int %entero& que se llame r. Establece el valor de r en ; y el valor de numerodecoches para un localizador de valor r en ;3. Qrocede a mostrar en pantalla un mensaje que indique cuál es la hora r y el nmero de coches para la hora r. Uinalmente, modi#ca nicamente la asignaciDn de valor a r de modo que en vez de ; sea ;9 y ejecuta de nuevo el programa
Tarea Tarea Nº 3
Estructura de Datos
;. 7e desea realizar un programa que realice las siguientes tareas@ a& Venerar, aleatoriamente, una lista de >.>>> de nmeros reales en el rango de ) a ;))). b& 4rdenar en modo creciente por el m"todo de la burbuja. c& 4rdenar en modo creciente por el m"todo 7hell. d& 4rdenar en modo creciente por el m"todo $adisort. @. Oonstruir un m"todo que permita ordenar por +echas y de mayor a menor un vector de n elementos que contiene datos de contratos %n ( <)&. Oada elemento del vector debe ser un objeto con los campos dGa, mes, aHo y nmero de contrato. Queden eistir diversos contratos con la misma +echa, pero no nmeros de contrato repetidos. Nota. Qresentar un Wenu para el m"todo a utilizar para ordenar será el de Xuic1sort, 7hell o urbuja