heap sort
TRANSCRIPT
ì HeapSort Algoritmo de Ordenamiento O(n lg n)
Técnica: Divide y Vencerás
Técnicas: • Estructura Heap Binaria para ordenamiento • Búsqueda Binaria • Ordenamiento en el Lugar
Ing. Juan Ignacio Zamora M. MS.c Facultad de Ingenierías Licenciatura en Ingeniería InformáCca con Énfasis en Desarrollo de SoFware Universidad La/noamericana de Ciencia y Tecnología
Primitivas de HeapSort
ì Tiene un Cempo O(n lg n) por lo que indica cierto uso de recursividad.
ì Apoya el ordenamiento en una estructura de datos interna llamada Heap.
ì Siendo heap representado por A[n]; establecemos que en el A[0] siempre va a quedar el valor mas grande.
ì A = {16, 14, 10, 8, 7, 9, 3, 2, 4, 1}
Primitivas de HeapSort
ì Operaciones base para navegar sobre el Heap ì Izquierda = I(i) = 2 * i; ì Der = D(i) = (2 * i) + 1; ì Padre = P(i) = (i/2);
ì Existen 2 Cpos de Heaps ì Max-‐Heap
ì A[P(i)] >= A[i] ì Min-‐Heap (simplemente es el opuesto)
ì A[P(i)] <= A[i]
Heap-‐Property
ì Se dice que el heap cumple con la propiedad si los nodos padre son siempre mayores a sus hojas (max-‐heap) :: este concepto se invierte en el min-‐heap.
Solutions for Chapter 6: Heapsort 6-13
Solution to Exercise 6.4-1
(b) (c)
(d) (e) (f)
(g) (h) (i)
2 4 5 7 8 13 17 20 25
20
4
2 5
7 8 13 17
25
2
4 5
7 8 13 17
2520
5
4 2
171387
20 25
7
4 5
171382
20 25
13
58
2 7 4 17
2520
8
7 5
171342
20 25
17
13 5
2478
2520
20
13 17
2478
255
A
ii
i i i
i
i i
(a)
25
13 20
21778
45
Métodos del Algoritmo
HeapSort :: O(n lg n) : Ordena el Arreglo al trasladar el node mayor a la ulCma posicion. Usa el ”tamano esCmado”
Uso: Sort()
Build-‐Max-‐Heap :: O(n) : UCliza el Max-‐Heapify para hacer cumplir todo el array con la propiedad. Selecciona los nodos padre A(n/2). A cada nodo le aplica MaxHeapify haciendo el array cumplir con el Max-‐heapify.
Uso: BuildMaxHeap(int[] A)
Max-‐Heapify :: O(lg n) : hace que se cumpla con la propiedad “Heap Property” a los nodos del array. Entonces busca el nodo mayor de la jerarquía y lo intercambia. El recorrido es recursivo
Uso: MaxHeapify(int[] A, int i)
MaxHeapify Navegación del Heap
BuildMaxHeap
Algoritmo Sort() en C#