Professional Documents
Culture Documents
ESCUELA DE INFORMATICA
ASIGNATURA:
Mtodos de Programacin II
CATEDRTICO:
TEMA:
ALUMNO(S):
Objetivos .................................................................................................................................... 4
Conclusin ............................................................................................................................... 10
Bibliografa ............................................................................................................................... 11
Introduccin a HeapSort
El Heapsort es un mtodo de ordenamiento por seleccin tipo rbol que organiza los datos de
forma tal que los nodos del nivel ms bajo estn ms a la izquierda posible y eso permite que
al recorrer el camino desde la raz hacia las hojas los datos se encuentren en orden
descendente y la informacin sea almacenada
Heap: es un rbol binario de altura mnima, en que los nodos del nivel ms bajo estn ms a la
izquierda posible
La informacin es almacenada de manera que al recorrer un camino desde la raz hacia las
hojas, los datos se encuentran en orden descendente
Si se presenta este arreglo resultante como un rbol se observa que cada elemento es el padre
de los otros elementos z[i], z[i+1] puesto que es una estructura con un grupo el cual j<_i/2
El vector debe tener estructura de montculo, es decir un rbol en el que los hijos de cada nodo
son siempre menores que el padre
De esta forma no se tiene que recorrer toda la zona desordenada para encontrar el elemento
mximo, ya que en este caso la ordenacin se realiza en sentido inverso.
Por lo tanto el costo final ser log(n) para cada elemento que se quiera colocar en la zona
ordenada es decir
Objetivos
Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un montculo
(heap), y luego extraer el nodo que queda como nodo raz del montculo (cima) en sucesivas
iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una propiedad de los
montculos, por la cual, la cima contiene siempre el menor elemento (o el mayor, segn se haya
definido el montculo) de todos los almacenados en l. El algoritmo, despus de cada
extraccin, recoloca en el nodo raz o cima, la ltima hoja por la derecha del ltimo nivel. Lo
cual destruye la propiedad heap del rbol. Pero, a continuacin realiza un proceso de
"descenso" del nmero insertado de forma que se elige a cada movimiento el mayor de sus dos
hijos, con el que se intercambia. Este intercambio, realizado sucesivamente "hunde" el nodo en
el rbol restaurando la propiedad montculo del arbol y dejndo paso a la siguiente extraccin
del nodo raz.
El algoritmo, en su implementacin habitual, tiene dos fases. Primero una fase de construccin
de un montculo a partir del conjunto de elementos de entrada, y despus, una fase de
extraccin sucesiva de la cima del montculo. La implementacin del almacn de datos en el
heap, pese a ser conceptualmente un rbol, puede realizarse en un vector de forma fcil.
Cada nodo tiene dos hijos y por tanto, un nodo situado en la posicin i del vector, tendr a sus
hijos en las posiciones 2 x i, y 2 x i +1 suponiendo que el primer elemento del vector tiene un
ndice = 1. Es decir, la cima ocupa la posicin inicial del vector y sus dos hijos la posicin
segunda y tercera, y as, sucesivamente. Por tanto, en la fase de ordenacin, el intercambio
ocurre entre el primer elemento del vector (la raz o cima del rbol, que es el mayor elemento
del mismo) y el ltimo elemento del vector que es la hoja ms a la derecha en el ltimo nivel.
El rbol pierde una hoja y por tanto reduce su tamao en un elemento. El vector definitivo y
ordenado, empieza a construirse por el final y termina por el principio.
Ejecucin de algoritmo en Java:
int i;
int arr[] = {19,24,25,47,26,28,29,30,31,32,34,35,36,37,39,40,41,42,43,44,};
}
}
Comparacin con mtodos de shellSort y quickSort
El mtodo Shell es una versin mejorada del mtodo de insercin directa. Recibe su nombre
en honor de su autor, Donalds L. shell, que no propuso en 1959. Ese momento donde se conoce
comunicacin con incrementos decrecientes.
Shell propone que las comparaciones entre elementos se efectu con saltos de mayor tamao,
pero con incrementos decrecientes; as, los elementos quedaran ordenados en el arreglo ms
rpidamente.
El algoritmo, en su implementacin habitual, tiene dos fases. Primero una fase de construccin
de un montculo a partir del conjunto de elementos de entrada, y despus, una fase de
extraccin sucesiva de la cima del montculo. La implementacin del almacn de datos en el
heap, pese a ser conceptualmente un rbol, puede realizarse en un vector de forma fcil. Cada
nodo tiene dos hijos y por tanto, un nodo situado en la posicin i del vector, tendr a sus hijos
en las posiciones 2 x i, y 2 x i +1 suponiendo que el primer elemento del vector tiene un ndice
= 1. Es decir, la cima ocupa la posicin inicial del vector y sus dos hijos la posicin segunda y
tercera, y as, sucesivamente. Por tanto, en la fase de ordenacin, el intercambio ocurre entre
el primer elemento del vector (la raz o cima del rbol, que es el mayor elemento del mismo) y
el ltimo elemento del vector que es la hoja ms a la derecha en el ltimo nivel. El rbol pierde
una hoja y por tanto reduce su tamao en un elemento. El vector definitivo y ordenado, empieza
a construirse por el final y termina por el principio.
Conclusin
El desarrollo de este trabajo trata de resumir no slo con el nimo de cumplir con las fechas y
requisitos establecidos por el mismo, sino que tambin, con el nimo de aprender y
retroalimentar todos los conceptos que en este resumen han sido vertidos, teniendo el cuidado
de aprender lo ms que se haya podido sobre el resumen que se ha realizado.
Bibliografa
SITIOS WEB
https://es.wikipedia.org/wiki/Heapsort
http://es.slideshare.net/jhosep94/heap-sort-15397805
http://estructuras-de-datos.wikispaces.com/Heapsort
www.ecured.cu/index.php/Heapsort
www.metodopormonticulos.blogspot.com/
www.ime.usp.br/~pf/algoritmos/aulas/hpsrt.html
http://upcanalisisalgoritmos.wikispaces.com/Grupo+5+-+Parcial+2