Академический Документы
Профессиональный Документы
Культура Документы
Facultad De Ingeniería
Investigación Final
Estructuras De Datos II
Presentado por:
Andrea José Mendoza Castañeda
José Neftalí Lagos Lara
Sarah Gabriela Castelar Pineda
Jonrry Wendell Enamorado Contreras
Docente:
Ing. Reynod Bocanegra
Fecha de Entrega:
26 de marzo de 2019.
Tabla de Contenido
Resumen ....................................................................................................................... 3
Introducción .................................................................................................................. 5
Metodología ................................................................................................................ 11
Bibliografía ................................................................................................................. 15
P á g i n a 2 | 17
Resumen
matemáticas para colocar una selección de datos en una secuencia dictada por una
anteriormente.
manera fácil, óptima y eficiente ha sido uno de los principales campos de investigación
del área. Esto se debe a que existe posiblemente una cantidad infinita de soluciones para
un mismo problema, abriendo así las puertas para que el programador pueda explorar su
creatividad e innovación. Sin embargo, para distintos casos existen distintas soluciones,
algunas más apropiadas que otras. A continuación, se presentan tres diferentes métodos
El Quicksort parte una lista en dos, tomando en cuenta un elemento como un valor
bandero; por ende, una lista tiene todos los elementos menores a dicha bandera, y la otra,
todos los elementos mayores. El MergeSort divide una lista en dos sublistas iguales y se
llama recursivamente para ordenar dichas sublistas. A continuación, junta ambas listas al
remover el elemento más pequeño de las sublistas y agregándolo a la lista final. Este
proceso es repetido hasta que una sublista este vacía cuando la otra sublista está agregada
a la lista final. El Heapsort crea un heap binary a partir de una lista de datos, y luego
P á g i n a 3 | 17
elimina el primero elemento de la lista y lo agrega al final de una lista final. Esto se repite
embargo, todos los algoritmos tienen sus ventajas y desventajas. Usualmente, el HeapSort
es el más lento, pero consume menos recursos al no ser recursivo. QuickSort usualmente
enlazadas.
P á g i n a 4 | 17
Introducción
computación o en ingles conocido como “Divide and conquer”. Esta frase ha sido
utilizada desde hace muchos años. Se le atribuye Divide y Vencerás a Julio Cesar (miliar
y político romano, nacido en el año 100 a.C.), porque los romanos para conquistar nuevas
tierras separaban a cada aldea vecina haciendo tratos e intercambios especiales con cada
uno de ellos, creando tensión y envidia entre cada una de las ciudades, así, evitando que
estas mismas juntaran fuerzas contra los Romanos, para asegurar la victoria.
Cuando visitas por primera vez una biblioteca para buscar específicamente un
libro, ¿Qué es lo primero que haces? La persona promedio se guiaría por el autor, el
género del libro o el titulo para encontrarlo fácilmente. Eso es el ejemplo más claro de
“Divide y Conquista”.
problema grande a un problema más pequeño, luego aún más pequeño y así
sucesivamente. El objetivo es tener los problemas o retos lo más simples posibles, para
resolverlos fácilmente. Esta técnica es famosa porque así es como los algoritmos de
Existen varios algoritmos del tipo Divide y Conquista, entre ellos tenemos: QuickSort,
tres algoritmos, tomando en consideración distintos factores como ser sus antecedentes
históricos, su efectividad y eficiencia, ventajas, desventajas, y demás para así poder emitir
P á g i n a 5 | 17
Marco Teórico
QuickSort:
Turing en 1960, por sus aportes fundamentales a los lenguajes de programación. Su mayor
Conquista” se puede deducir que su orden asintótico es logarítmico. QuickSort nos ayuda
implementado el QuickSort:
at right place */
}
P á g i n a 6 | 17
}
bandera seleccionada.
El proceso clave en QuickSort es la partición. El destino de las particiones es, dada una
matriz ordenada y coloca todos los elementos más pequeños (más pequeños que x) antes
de x, y coloca todos los elementos mayores (mayores que x) después de X. Todo esto
debe hacerse en tiempo lineal. Así es como se logra de manera eficiente el ordenamiento
lógico. Hay otros tipos de algoritmos para ordenar n elementos, pero se ha comprobado
MergeSort:
por mezcla, donde la primera y la segunda mitades de una matriz se ordenan de forma
recursiva, fusionándose luego. La diferencia entre Quick Sort, es que Merge Sort parte de
la idea que se necesitan menos pasos para construir una lista ordenada a partir de dos
Según la página Ricardo Peña, hay una serie de pasos en la secuencia Merge Sort, a
4. Mezclar S1 y S2 ordenadamente en S
(S1 y S2).
una posición.
MergeSort es ideal para listas enlazadas, ya que es más estable y cómodo para medios de
acceso lento como bibliotecas. (Tiene complejo de espacio incorrecto en las matrices
El pseudocódigo que brinda GeeksforGeeks para MergeSort nos hace entender mejor
cómo funciona:
If r > l
1. Find the middle point to divide the array into two halves:
middle m = (l+r) /2
P á g i n a 8 | 17
3. Call mergeSort for second half:
HeapSort
:
El algoritmo de ordenamiento HeapSort fue inventado por J. W. J. Williams, un
Al igual que los otros dos algoritmos de ordenamiento, la notación asintótica del
HeapSort es de O (n log n), siendo en el mejor de los casos O(n). A pesar de esto, el
Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un
montículo (heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima)
una propiedad de los montículos, por la cual, la cima contiene siempre el menor elemento
algoritmo, después de cada extracción, recoloca en el nodo raíz o cima, la última hoja
por la derecha del último nivel. Lo cual destruye la propiedad heap del árbol. Pero, a
P á g i n a 9 | 17
continuación, realiza un proceso de "descenso" del número insertado de forma que se
elige a cada movimiento el mayor de sus dos hijos, con el que se intercambia. Este
propiedad montículo del árbol y dejando paso a la siguiente extracción del nodo raíz.
(2019)
HeapSort sería:
montículo M
for i = 0..n:
insertar_en_monticulo(M, A[i])
for i = 0..n:
A[i] = extraer_cima_del_monticulo(M)
return A
P á g i n a 10 | 17
Metodología
Para llevar a cabo la presente investigación se utilizó una serie de técnicas o procesos
parámetros:
Análisis: Se tomaron todos los conceptos y se separaron, para poder estudiar cada uno de
concordaban unos con otros y como se diferenciaban. Se logró entender sus similitudes y
Clasificación: A partir de lo estudiado en las dos etapas anteriores, fue fácil clasificar
cada uno de los algoritmos según el caso o la implementación que más conviniera,
Conclusión: Las conclusiones del presente estudio serán presentadas al final del informe,
investigación.
P á g i n a 11 | 17
Investigación Aplicada:
siguientes algoritmos:
momento de recorrer un grafo, tomando en cuenta las distancias de todos los posibles
ponderado. Esto significa que encuentra un subconjunto de los bordes que forma un árbol
que incluye cada vértice, donde se minimiza el peso total de todos los bordes del árbol.
El algoritmo opera construyendo este árbol un vértice a la vez, desde un vértice inicial
arbitrario, en cada paso agregando la conexión más barata posible del árbol a otro vértice.
el árbol de expansión mínimo. Al igual que MST de Prim, generamos un SPT (árbol de
ruta más corto) con una fuente dada como raíz. Mantenemos dos conjuntos, un conjunto
contiene vértices incluidos en el árbol de la ruta más corta, otro conjunto incluye vértices
que aún no están incluidos en el árbol de la ruta más corta. En cada paso del algoritmo,
encontramos un vértice que está en el otro conjunto (conjunto de aún no incluido) y tiene
Todos los ejemplos son presentados en el lenguaje de programación Java, citando las
P á g i n a 12 | 17
Conclusiones y Recomendaciones
ordenamiento de datos. Los grandes profesionales que trabajaron en ellas aún siguen
siendo reconocidos por ello. ¿Por que? Simplemente porque hasta el día hoy no hay
Quicksort particiona una lista en dos listas secundarias con todos los elementos
menos que un valor "bandera" en una lista y todos los elementos mayores que el valor
pivote en la otra, luego se llama a sí misma recursivamente para ordenar las listas
sublistas.
Mergesort divide una lista por igual en 2 listas secundarias y se llama a sí misma
recursivamente para clasificar las listas secundarias. Luego, "une" las 2 listas juntas,
eliminando el elemento más pequeño de las sublistas y agregándole a la lista final. Este
proceso se repite hasta que una lista secundaria está vacía cuando la otra lista se agrega a
la lista final.
Heapsort crea un heap binario de una lista de datos, luego elimina el primer
elemento de la lista y lo agrega a una lista final. Esto se repite hasta que el montón está
vacío.
Por lo general, el ordenamiento rápido es más rápido en los arreglos, siempre que la
P á g i n a 13 | 17
En resumen, si, si recomendamos el uso de QuickSort, MergeSort y HeapSort.
Cada una de ellas tiene sus diferencias, donde un desarrollador sabe cual usar según el
escenario en que lo necesita. Quien conozca sus pequeñas diferencias, sabrá de qué
P á g i n a 14 | 17
Bibliografía
https://www.ecured.cu/Charles_Antony_Richard_Hoare
http://programagic.blogspot.com/2016/12/algoritmo-heap-sort.html?m=1
http://rosettacode.org/wiki/Sorting_algorithms/Heapsort
Skiena, Steven (2008). "Searching and Sorting". The Algorithm Design Manual. Springer.
nothing but an implementation of selection sort using the right data structure.
ejemplo_de_metodologia_de_la_investigacion.html
P á g i n a 15 | 17
Fuentes utilizadas para ejemplos de la investigación aplicada:
Algorithms. (2019). Prim's - Minimum Spanning Tree (MST) using Adjacency Matrix |
https://www.geeksforgeeks.org/dijkstras-shortest-path-algorithm-greedy-algo-7/
26 Mar. 2019].
https://www.gestiopolis.com/relacion-precio-calidad-estandares-internacionales-
P á g i n a 16 | 17
Nanyastridcoral.blogspot.com. (2002). CONTROL DE CALIDAD DE ALIMENTOS.
https://search.proquest.com/results/31C6BB974E554B3EPQ/1?accountid=35325
P á g i n a 17 | 17