1. ì
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
2. 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}
3. 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]
4. 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
Solution to Exercise 6.4-1
8
255
(a)
25
13 20
21778
45
5. 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)