Академический Документы
Профессиональный Документы
Культура Документы
Laboratorio de Computación
Salas A y B
Tista García Edgar M.I.
Profesor:
Grupo: 5
No de Práctica(s): 3
No. de Equipo de 21
cómputo empleado:
Semestre: 2019-2
Observaciones:
CALIFICACIÓN: ________________
Contenido
Objetivo: ................................................................................................................. 3
Actividades: ............................................................................................................ 3
Introducción: ........................................................................................................... 3
Desarrollo: .............................................................................................................. 6
Solución: ............................................................................................................. 7
Evidencia de implementación:............................................................................. 8
Solución: ............................................................................................................. 8
Evidencia de implementación:........................................................................... 10
Solución: ........................................................................................................... 10
Evidencia de implementación:........................................................................... 11
Conclusión ........................................................................................................... 12
2
Objetivo: El estudiante conocerá e identificará la estructura de los algoritmos de
ordenamiento Counting Sort y Radix Sort.
Actividades:
• Implementar el algoritmo Counting Sort en algún lenguaje de programación
para ordenar una secuencia de datos.
• Implementar el algoritmo Radix Sort en algún lenguaje de programación para
ordenara una secuencia de datos.
Introducción:
3
2° iteración, etc.). Por ejemplo Cola[1].añadir = 1501 ; Cola[3].añadir
= 1603.
6. Desencolar los elementos de cada Cola[ P ], siendo 𝑃 ∈ {0,1,2,3, … } en
ese orden para ordenar de manera Ascendente, por el contrario 𝑃∈
{9,8,7,6, … } para ordenar de manera Descendiente. Obviamente al
desencolar cada cola, sus elementos se almacenaran en la lista
original.
7. Repetir desde el paso 2. Se repetirá por L veces, siendo L el número
de dígitos de los números.
4
número. Tomando ese índice, y el elemento en cuestión, colocarlo en
un nuevo arreglo, reducir la cantidad de Auxiliar de ese número, repetir
este paso , hasta terminar el arreglo.
7. Copiar los elementos en el orden del arreglo ya ordenado al original.
5
Desarrollo:
Ejercicios previos (análisis de diferencia entre la práctica suministrada
por la división contra la teoría instruida por el profesor):
A. Utiliza un arreglo (lista) de 25 enteros, los cuales serán solicitados al usuario (asume que
el usuario los va a ingresar correctamente) Para ello considera un rango de [55 a 63]
B. Crea un segundo arreglo donde cada posición será asociada a uno de los posibles valores
del rango indicado
C. En una primera pasada al arreglo (lista) que llenó el usuario, realiza la cuenta de las
apariciones de cada uno de los valores. (recuerda que eso se hace en un primer
arreglo/lista auxiliar)
D. Realiza la cuenta del arreglo; en cada índice se considera la cantidad de elementos
actuales y los anteriores. Sugerencia, si tienes dificultades utiliza un arreglo adicional
E. Crea un tercer arreglo para ingresar los elementos ordenados.
F. Realiza una segunda pasada al primer arreglo, partiendo desde el final del mismo y para
cada elemento, analiza la posición que le corresponde en el segundo arreglo y establece
su posición final en el tercero.
6
Solución:
El programa (llamado JavaApplication2) esta creado en NetBeans porque el IDE ayuda
mucho a la creación de los programas en estos instantes donde el dominio sobre Java es
muy pobre y este IDE marca automáticamente los errores e incluso mejorar el código al
encontrar mejores maneras de implementar una misma idea.
Observaciones:
7
Evidencia de implementación:
Solución:
El programa (llamado JavaApplication3) esta creado en NetBeans porque el IDE ayuda
mucho a la creación de los programas en estos instantes donde el dominio sobre Java es
muy pobre y este IDE marca automáticamente los errores e incluso mejorar el código al
encontrar mejores maneras de implementar una misma idea.
8
dándole el índice de 4 a la transformación de un número de 3 cifras transformado,
no hallaría la posición indicada.
B) Se implementan 4 colas de tipo entero usando (Linkedlist) es la opción más
conveniente que encontré porque había Arraylist,Dqueue, etc. Pero no lograba
cumplir en alguna función con lo que yo necesitaba, y por eso es la implementación
de esta estructura, obviamente limitando sus funciones , porque si no , su
comportamiento no sería de una cola.
C) Como mencione en el inciso B, implemente las colas.
D) Varias pasadas son realizas en el programa, ya que para digito se necesita encolar
en una cola de acuerdo al digito y desencolar todas para volverla al arreglo original.
Para este inciso se utilizaron demasiados ciclos , ya que cada cola al no poseer un
método que regresa todos los elementos , se tenía que retirar de 1 en 1.
E) Se muestra ordenada la lista en la cuarta iteración, como agregado se puede decir
que muestra la lista con todos los elementos después de cada iteración , es decir
después de desencolar las 4 colas.
Observaciones:
9
Evidencia de implementación:
Solución:
A. Use para este caso la declaración de un arreglo ya definido, ya que con ele no es
necesario tener que estando introduciendo los elementos que constituyen el arreglo,
y en este caso decidí que fuera de 10 elementos desordenados, por la simple razón
de que no se crean tantas sub-listas que serían un desastre como captura de
10
pantalla, sino que son más difíciles de observar su comportamiento y de como se
reacomodan.
B. El programa esta constituido de 3 métodos. printArray() que recibe un arreglo y lo
imprime en pantalla, en este caso para mostrar las nuevas sub-listas derivadas de
la original. Merge() se encarga de dividir la lista en 2 , crear ambas listas, asignar
los valores a cada lista, y a partir de donde empiezan los ciclos while() es donde
suceden las intercalaciones entre las sub-listas ya divididas. Por otro lado Sort() se
encarga de calcular la mitad de los elementos que se le darán al método Merge() y
más que nada limitar este en sus particiones, además este es un método recursivo.
Los demás elementos de mi análisis se encuentran en comentarios en el programa.
C. Esta opción fue muy fácil de implementar, siguiente de que el método Merge()
llenaba la lista izquierda y derecha , lo incluí aprovechando de que el método
printArray() imprimé un arreglo , ambas listas se las pase como parámetro.
Evidencia de implementación:
11
Ejercicio 4. Conclusiones
Escribe las conclusiones de tu práctica en la cual incluyas comentarios generales de
todos los algoritmos de ordenamiento vistos en las primeras 3 prácticas del curso
Conclusión
Esta práctica fue sencilla comparada con las 2 anteriores prácticas sobre
algoritmos de ordenamiento, principalmente porque los algoritmos son fáciles de
comprender en su funcionamiento, lo difícil es manipular los datos con las
estructuras en un nuevo lenguaje de programación (Java).
Por anterior dicho, puedo justificar el decir que esta práctica se ha cumplido
exitosamente, además de añadir de con esta se ha explorado muchas más opciones
del lenguaje Java que en todas las prácticas de POO y EDA 2 juntas hasta ahora.
Creo que esta práctica te impulsa en gran medida hacia el explora miento de nuevas
características en Java de las que C no estaba dota, ya que en este lenguaje la
mayoría de las acciones eran por cuenta propia.
12