heap sort

8
HeapSort Algoritmo de Ordenamiento O(n lg n) 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

Upload: juan-zamora-msc-mba

Post on 17-Jul-2015

46 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Heap Sort

ì  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        

Page 2: Heap Sort

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}  

Page 3: Heap Sort

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]  

Page 4: Heap Sort

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

Page 5: Heap Sort

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)  

Page 6: Heap Sort

MaxHeapify  Navegación  del  Heap  

Page 7: Heap Sort

BuildMaxHeap  

Page 8: Heap Sort

Algoritmo  Sort()  en  C#