2. CONTENIDO
1. Introducción
2. Descripción del método
I. Ventajas y desventajas.
II. Funcionamiento
III. Complejidad computacional
IV. Aplicaciones y usos en la actualidad
3. Conclusiones
4. Bibliografía.
5. Agradecimientos.
3. INTRODUCCIÓN
Ordenar una lista es la operación de arreglar los elementos de acuerdo algún criterio (no
necesariamente matemático). En el caso de tratarse de números el criterio de orden podría ser
“<”, es decir, ordenar los elementos de la lista de menor a mayor. Aunque naturalmente un ser
humano es capaz de implementar una metodología propia para ordenar un conjunto de
elementos, esta tarea se vuelve extremadamente complicada cuando el número de elementos es
grande, puesto que se necesitaría mucho tiempo y se podrían cometer errores.
Ejemplos de esta situación podrían
ser: ordenar alfabéticamente a los
habitantes de una ciudad, ordenar
una biblioteca, clasificar
alfabéticamente las palabras de un
lenguaje, ordenar una serie de
paginas de internet, ordenar un
conjunto de números enteros, etc.
4. DESCRIPCIÓN DEL MÉTODO HEAP SORT
ORIGEN
Fue publicado originalmente por J.W.J. Williams llamándolo "Algorithm 232" en la revista
"Communications of the ACM" en 1964.
Este algoritmo consiste en ordenar en un arbol y luego extraer del nodo que queda como raíz
en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una
propiedad de montículos, por la cual, la cima siempre dependiendo de cómo se
defina contendrá el mayor o menor elemento del montículo.
DESCRIPCIÓN GENERAL
5. VENTAJAS Y DESVENTAJAS
VENTAJAS
• Funciona efectivamente con datos
desordenados.
• Su desempeño es en promedio tan
bueno como el Quicksort.
• No utiliza memoria adicional.
DESVENTAJAS
• No es estable, ya que se comporta de
manera ineficaz con datos del mismo
valor
• Este método es mucho mas complejo
que los demás.
6. FUNCIONAMIENTO DEL MÉTODO HEAPSORT
Este algoritmo consiste en almacenar todos los elementos en un montículo y luego extraer el
nodo que queda como raíz en iteraciones sucesivas obteniendo el conjunto ordenado.
Para esto el método realiza los siguientes pasos:
• 1. Se construye el Heap/montículo a partir del arreglo original.
• 2. La raíz se coloca en el arreglo.
• 3. El último elemento del montículo se vuelve la raíz.
• 4. La nueva raíz se intercambia con el elemento de mayor valor por nivel.
• 5. Tras el paso anterior la raíz vuelve a ser el mayor del montículo.
• 6. Se repite el paso 2 hasta que quede el arreglo ordenado.
57. COMPLEJIDAD DE HEAP SORT
El algoritmo de ordenación por montículos o Heap Sort recorre el conjunto de elementos
desde la posición de la mitad hasta la primera organizando el montículo correspondiente a
dicho elemento. Una vez terminado este proceso, se inicia el proceso de ordenación
intercambiando el primer elemento por el último del arreglo y reorganizando el montículo a
partir de la primera posición.
La complejidad del algoritmo de ordenación por
montículos es O(n log n) teniendo en cuenta que el
proceso de organizar el montículo en el peor caso
solamente tiene que hacer intercambios sobre una sola
línea de elementos desde la raíz del árbol hasta alguna
de las hojas para un máximo de n log (n) intercambios.
58. APLICACIONES Y USOS EN LA ACTUALIDAD
Una de las mas grandes aplicaciones de Heap Sort es construir colas de prioridad con la idea que
busque los procesos que llevan la mayor carga de prioridad dado una gran cantidad de procesos
por hacer.
Otra aplicación es la de Programación de Intervalos, en donde se tiene una lista de tareas con un
tiempo de inicio y fin y deseamos hacer tantas tareas como sean posibles en un periodo de tiempo
limitado.
En esencia una aplicación o algoritmo que trate de ordenar una lista de elementos dependerán
eficientemente en un algoritmo de ordenamiento, y el método Heap Sort puede proveernos de tal
función.
59. CONCLUSIONES
La principal ventaja de este método de ordenamiento es su eficiencia en el tiempo de ejecución,
el cual es O(n log n). La eficiencia de la memoria, para la implementación del algoritmo es O(1),
tanto en la forma iterativa como recursiva.
Concluyendo, decimos que este método es conveniente
usarlo cuando se trata de ordenar arreglos o listas grandes,
ya que cuando por ejemplo, este se encuentra con
elementos repetidos, el algoritmo suele tener
inconvenientes a diferencia de otros métodos como el Quick
Sort y el Merge Sort.
60. REFERENCIAS BIBLIOGRÁFICAS
• Dr. GuillermoCámara Chávez. (2015). Ordenación. 06/06/2016, de homepages. Sitio web:
http://homepages.dcc.ufmg.br/~gcamarac/cursos/algoritmia/ordenacion_4pages_sec.pdf
• Conrado Martínez. (2012). Algorítmica: Heaps y heapsort. 06/06/2016, de algorithmics Sitio
web: http://algorithmics.lsi.upc.edu/docs/pqueues.pdf
• Springer-Verlag (1991). “Algorithms and Data Strctures”. Ottawa, Canada. 06/06/2016,
Disponible en: https://books.google.com.ec/books?id=NRrcsIJZAYMC