SlideShare una empresa de Scribd logo
1
Ordenamiento, Heapsort y Colas de
prioridad
Agustín J. González
ELO 320: Estructura de Datos y
Algoritmos
2
Ordenamiento y Estadísticas de
Orden
 Problema de ordenamiento:
 Entrada: Una secuencia de n números (a1,a2, ..., an)
 Salida: Una permutación (a1´, a2´, a3´,...,an´) de la
entrada tal que a1´≤ a2´ ≤ a3´ ≤... ≤ an´
 Soluciones:
 Insertion-Sort,
 merge-sort, heapsort, quicksort. ---> Ω(n lg n)
 La estadística de orden i-ésimo de un conjunto de n
números, es el i-ésimo número más pequeño.
 ---> O(n)
3
1
6
1
4
1
0
7 9 38
142
16 |14 |10 | 8 | 7 | 9 | 3 | 2 | 4 | 1
Heapsort
 La estructura de datos “heap” es un arreglo
de objetos que pueden ser vistos como un
árbol binario completo (sólo pueden faltar
nodos al final del último nivel).
 Ej.
1 2 3 4 5 6 7 8 9 10
4
 El arreglo puede contener más entradas (=length(A)) que el heap
(=heap_size(A))
 Obviamente heap_size(A) ≤ length(A)
 La raíz del árbol es A[1] (Con índices partiendo de 1 aquí)
 Dado un índice i de un nodo, su padre, hijo izquierdo e hijo derecho
son determinados como:
 Parent(i)
return  i/2 
 Left(i)
return 2i
 Right(i)
return 2i+1
 Estos procedimientos se pueden implementar como macros o
código “in-line”.
 Propiedad heap : A [Parent(i)]≥ A [i] para todo nodo diferente de la
raíz.
Propiedades del heap
16 |14 |10 | 8 | 7 | 9 | 3 | 2 | 4 | 1
1 2 3 4 5 6 7 8 9 10
5
Heapify(A,i)
le= Feft(i)
ri= Right(i)
if( le <= heap_size(A) && A[le] > A[i] )
largest = le
else
largest = i
if ( ri <= heap_size(A) && A[ri] > A[largest] )
largest = ri
if (largest != i)
exchange A[i] <-> A[largest]
Heapify(A, largest)
Procedimientos básicos usados en algoritmos de
ordenamiento y en colas de prioridad
 Heapify(A,i): Entrada: Left(i) y Right(i) son heaps, pero A[i]
puede ser menor que sus hijos.
 Salida: Heapify mueve A[i] hacia abajo para que el sub-árbol
con raíz i sea un heap.
Θ (1)
O (tamaño
subárbol)
6
2n/3
n/3
T(n) ≤ T(2n/3) + Θ(1)
==> T(n) = O(lg n)
Análisis de tiempo de Ejecución de
Heapify
 T(n) = Θ(1) + Tiempo de Heapify sobre uno
de los sub-árboles.
 El peor caso para el tamaño del sub-árbol es
2n/3. Éste ocurre cuando la última fila está la
mitad llena.
7
Build_Heap(A) {
heap_size [A] = length [A]
for i = length(A) /2  downto 1
do Heapify(A,i)
}
4 | 1 | 3 | 2 | 16 | 9 | 10 | 14 | 8 | 7Ejemplo:
Construcción del heap: Build_Heap
 La construcción del heap se logra aplicando la función heapify
de manera de cubrir el arreglo desde abajo hacia arriba.
 Notar que los nodos hojas, ya son heap. Éstos están en
A[ (n/2+1) .. n].
 El procedimiento Build_Heap va a través de los nodos restantes
y corre heapify en cada uno.
8
 Cada llamado a Heapify tiene un costo O(lgn) y como a lo más
hay n de estos llamados, una cota superior para el costo de
Build_heap es O(nlgn).
 Un mejor análisis conduce a O(n)
 ¿Cuántos subárboles (nodos) de altura h hay como máximo?
 Para subárboles (nodos) de altura h el costo de Heapify es
O(lgn)= O(h).
 Luego el costo es
   






=



∑∑ ==
+
n
h
h
n
h
h
h
nOO(h)
n lg
0
lg
0
1
22
2
)2/11(
2/1
2 2
0
=
−
=∑
∞
=h
h
h
lgn
h 0 0
Build_Heap puede ser acotado por:
n ( *2) ( )
2 2h h
h
h h
O O n O n O n
∞
= =
∴
   
= = =   
  
∑ ∑
n/2h+1

Análisis del tiempo de ejecución
9
Heapsort(A)
Build_Heap(A)
for (i= lenght(A) downto 2 ) do
exchange A[1] <-> A[i]
heap_size [A] = heap_size [A]-1
Heapify(A,1)
Algoritmo Heapsort
 1.- Construir un heap invocando a Build_Heap
 2.- Intercambiar el primer elemento, la raíz y mayor elemento,
del heap con el último.
 3.- Restituir la propiedad heap en el heap de n-1 elementos.
 El costo de Heapsort es O(n lg n) porque el llamado a
Build_Heap toma O(n) y luego tenemos n-1 llamados a Heapify
cuyo tiempo es O(lgn).
10
Colas de Prioridad
 Heapsort es muy bueno, pero es superado por quicksort (lo veremos
luego).
 La aplicación más popular de heapsort es para implementar colas de
prioridad.
 Una cola de prioridad es una estructura de datos que mantiene un
conjunto S de elementos cada uno asociado con una clave key.
 La cola de prioridad soporta las siguientes operaciones:
 Insert(S,x): inserta x en el conjunto S
 Maximum(S): retorna el elemento con mayor clave.
 Extract-Max(S): remueve y retorna el elemento con mayor clave.
 Aplicaciones:
- Itineración de tareas en sistemas de tiempo compartido
- Colas de prioridad en simuladores conducidos por evento (Event-
driven simulator)
11
Tiempo de Heap_Extract_Max : O(lg n) básicamente el tiempo de Heapify
Tiempo de Heap_Insert : O(lg n) porque es el recorrido desde la nueva hoja a la raíz.
Operaciones en Colas de prioridad
 Heap_Maximum(S): retorna el nodo raíz en tiempo θ(1).
 Heap_Extract_Max(A)
if heap_size[A] <1 then error “Heap undeflow”
max = A[1]
A[1] = A[heap_size [A]]
heap_size [A] = heap_size [A]-1
Heapify(A,1)
return max
 Heap_Insert(A, key)
heap_size [A] = heap_size [A]+1
i = heap_size [A]
while (i > 1 and A[Parent(i)] < key) do
A[i] = A[Parent(i)]
i = Parent(i)
A[i] = key
12
Divertimento
 Se trata de colorear 9 vértices de esta estrella.
 Para ello usted debe partir de un vértice no coloreado, avanzar
en línea recta con caminos de largo 2 y podrá colorear el vertice
de llegada.
 ¿Puede usted colorear nueve vértices?
12
1
2

Más contenido relacionado

La actualidad más candente

Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)
edi.euitio
 
Tablas Hash(David Sierra Marqués)
Tablas Hash(David Sierra Marqués)Tablas Hash(David Sierra Marqués)
Tablas Hash(David Sierra Marqués)
edi.euitio
 
Clips v6
Clips v6Clips v6
Clips v6
JohnnyZerna
 
Tablas Hash (Lucía Álvarez López)
Tablas Hash (Lucía Álvarez López)Tablas Hash (Lucía Álvarez López)
Tablas Hash (Lucía Álvarez López)
edi.euitio
 
P1
P1P1
Clase 11.2 mbe funcion lineal y cuadratica
Clase 11.2 mbe funcion lineal y cuadraticaClase 11.2 mbe funcion lineal y cuadratica
Clase 11.2 mbe funcion lineal y cuadratica
luis jimenez
 
El logaritmo
El logaritmoEl logaritmo
El logaritmo
GiovAnna94
 
Lab 1
Lab 1Lab 1
Capítulo 8: Criptografía de curvas elípticas
Capítulo 8: Criptografía de curvas elípticasCapítulo 8: Criptografía de curvas elípticas
Capítulo 8: Criptografía de curvas elípticas
Juan Manuel García
 
Versión 1 del Diagrama de flujo para
Versión 1 del Diagrama de flujo para Versión 1 del Diagrama de flujo para
Versión 1 del Diagrama de flujo para
jorgegrajales090
 
Cuestionario
CuestionarioCuestionario
Cuestionario
Javier Rivera
 
Tablas hash (Aitor Alonso Álvarez)
Tablas hash (Aitor Alonso Álvarez)Tablas hash (Aitor Alonso Álvarez)
Tablas hash (Aitor Alonso Álvarez)
edi.euitio
 
!Prograc6
!Prograc6!Prograc6
!Prograc6
robertoxe
 
tabla-de-propiedades-del-logaritmo-potencias-y-raices
 tabla-de-propiedades-del-logaritmo-potencias-y-raices tabla-de-propiedades-del-logaritmo-potencias-y-raices
tabla-de-propiedades-del-logaritmo-potencias-y-raices
Brayan Luengas
 
Codigos hanoi
Codigos hanoiCodigos hanoi
Fm
FmFm

La actualidad más candente (16)

Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)Tablas Hash (Sergio Sánchez Marcos)
Tablas Hash (Sergio Sánchez Marcos)
 
Tablas Hash(David Sierra Marqués)
Tablas Hash(David Sierra Marqués)Tablas Hash(David Sierra Marqués)
Tablas Hash(David Sierra Marqués)
 
Clips v6
Clips v6Clips v6
Clips v6
 
Tablas Hash (Lucía Álvarez López)
Tablas Hash (Lucía Álvarez López)Tablas Hash (Lucía Álvarez López)
Tablas Hash (Lucía Álvarez López)
 
P1
P1P1
P1
 
Clase 11.2 mbe funcion lineal y cuadratica
Clase 11.2 mbe funcion lineal y cuadraticaClase 11.2 mbe funcion lineal y cuadratica
Clase 11.2 mbe funcion lineal y cuadratica
 
El logaritmo
El logaritmoEl logaritmo
El logaritmo
 
Lab 1
Lab 1Lab 1
Lab 1
 
Capítulo 8: Criptografía de curvas elípticas
Capítulo 8: Criptografía de curvas elípticasCapítulo 8: Criptografía de curvas elípticas
Capítulo 8: Criptografía de curvas elípticas
 
Versión 1 del Diagrama de flujo para
Versión 1 del Diagrama de flujo para Versión 1 del Diagrama de flujo para
Versión 1 del Diagrama de flujo para
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Tablas hash (Aitor Alonso Álvarez)
Tablas hash (Aitor Alonso Álvarez)Tablas hash (Aitor Alonso Álvarez)
Tablas hash (Aitor Alonso Álvarez)
 
!Prograc6
!Prograc6!Prograc6
!Prograc6
 
tabla-de-propiedades-del-logaritmo-potencias-y-raices
 tabla-de-propiedades-del-logaritmo-potencias-y-raices tabla-de-propiedades-del-logaritmo-potencias-y-raices
tabla-de-propiedades-del-logaritmo-potencias-y-raices
 
Codigos hanoi
Codigos hanoiCodigos hanoi
Codigos hanoi
 
Fm
FmFm
Fm
 

Similar a Heap sort2

heapsort.ppt
heapsort.pptheapsort.ppt
heapsort.ppt
jlmansilla
 
Expo fibonacci
Expo fibonacciExpo fibonacci
Expo fibonacci
smarthur
 
Pilas Colas
Pilas ColasPilas Colas
Informe
InformeInforme
Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
Carlos Eduardo Avila Torrentera
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
Israel Gaytan
 
Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
Software Guru
 
Fundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADAFundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADA
Jose Luis Dorao
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
chrisflores001
 
Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacion
LUISFERNANDOMORENOSO2
 
Paralela6
Paralela6Paralela6
Paralela6
Abraham Zamudio
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programación
fpcanizaresg
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
Juampa Condoy Espinosa
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
jlmansilla
 
Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...
Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...
Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...
Dunkherz
 
4ta parte expresiones y funciones matemáticas
 4ta parte expresiones y funciones matemáticas 4ta parte expresiones y funciones matemáticas
4ta parte expresiones y funciones matemáticas
yuli02
 
Pqueues
PqueuesPqueues
Pqueues
Wili Cjuro
 
Pqueues
PqueuesPqueues
Pqueues
Wili Cjuro
 
Derivadas
DerivadasDerivadas
Derivadas
luisv9616
 
Arreglos y matrices
Arreglos y matricesArreglos y matrices
Arreglos y matrices
C.T.P DE PITAL
 

Similar a Heap sort2 (20)

heapsort.ppt
heapsort.pptheapsort.ppt
heapsort.ppt
 
Expo fibonacci
Expo fibonacciExpo fibonacci
Expo fibonacci
 
Pilas Colas
Pilas ColasPilas Colas
Pilas Colas
 
Informe
InformeInforme
Informe
 
Algoritmo por seleccion
Algoritmo por seleccionAlgoritmo por seleccion
Algoritmo por seleccion
 
Apache spark meetup
Apache spark meetupApache spark meetup
Apache spark meetup
 
Procesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache SparkProcesamiento de datos a gran escala con Apache Spark
Procesamiento de datos a gran escala con Apache Spark
 
Fundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADAFundamentos de Analisi y Diseño de Algoritmos FADA
Fundamentos de Analisi y Diseño de Algoritmos FADA
 
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
Aedii pilas colas_y_recursividad_teoria_sem07_a_sem10
 
Curso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacionCurso-PROPE-PyED-5-Pilas-Colas-programacion
Curso-PROPE-PyED-5-Pilas-Colas-programacion
 
Paralela6
Paralela6Paralela6
Paralela6
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programación
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...
Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...
Lenguaje de programacion c++ basico 4ta parte expresiones y funciones matemát...
 
4ta parte expresiones y funciones matemáticas
 4ta parte expresiones y funciones matemáticas 4ta parte expresiones y funciones matemáticas
4ta parte expresiones y funciones matemáticas
 
Pqueues
PqueuesPqueues
Pqueues
 
Pqueues
PqueuesPqueues
Pqueues
 
Derivadas
DerivadasDerivadas
Derivadas
 
Arreglos y matrices
Arreglos y matricesArreglos y matrices
Arreglos y matrices
 

Último

Los 6 Pasos hacia una Financiación Exitosa
Los 6 Pasos hacia una Financiación ExitosaLos 6 Pasos hacia una Financiación Exitosa
Los 6 Pasos hacia una Financiación Exitosa
Richard208605
 
SEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONAL
SEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONALSEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONAL
SEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONAL
NahomyAlemn1
 
Presentación sobre la Teoría Económica de John Maynard Keynes
Presentación sobre la Teoría Económica de John Maynard KeynesPresentación sobre la Teoría Económica de John Maynard Keynes
Presentación sobre la Teoría Económica de John Maynard Keynes
kainaflores0
 
Rice & Jello Delights de yonhalberth cayama
Rice & Jello Delights de yonhalberth cayamaRice & Jello Delights de yonhalberth cayama
Rice & Jello Delights de yonhalberth cayama
haimaralinarez7
 
258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx
258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx
258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx
jesus ruben Cueto Sequeira
 
La Comisión europea informa sobre el progreso social en la UE.
La Comisión europea informa sobre el progreso social en la UE.La Comisión europea informa sobre el progreso social en la UE.
La Comisión europea informa sobre el progreso social en la UE.
ManfredNolte
 
PMI sector servicios España mes de mayo 2024
PMI sector servicios España mes de mayo 2024PMI sector servicios España mes de mayo 2024
PMI sector servicios España mes de mayo 2024
LuisdelBarri
 
Importancia-Seguridad-Social-en-Salud-y-Pensiones.pdf
Importancia-Seguridad-Social-en-Salud-y-Pensiones.pdfImportancia-Seguridad-Social-en-Salud-y-Pensiones.pdf
Importancia-Seguridad-Social-en-Salud-y-Pensiones.pdf
emerson vargas panduro
 
SERVICIOS DIGITALES EN EL PERÚ - LO QUE DEBES SABER-1.pdf
SERVICIOS DIGITALES EN EL PERÚ  - LO QUE DEBES SABER-1.pdfSERVICIOS DIGITALES EN EL PERÚ  - LO QUE DEBES SABER-1.pdf
SERVICIOS DIGITALES EN EL PERÚ - LO QUE DEBES SABER-1.pdf
RAFAELJUSTOMANTILLAP1
 
Capitulo 5 de Kotler, mercados de consumo.
Capitulo 5 de Kotler, mercados de consumo.Capitulo 5 de Kotler, mercados de consumo.
Capitulo 5 de Kotler, mercados de consumo.
gonzalo213perez
 
SEMINARIO - TESIS RESIDUOS SOLIDOS 2024.docx
SEMINARIO - TESIS  RESIDUOS SOLIDOS 2024.docxSEMINARIO - TESIS  RESIDUOS SOLIDOS 2024.docx
SEMINARIO - TESIS RESIDUOS SOLIDOS 2024.docx
grimarivas21
 
FERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIA
FERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIAFERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIA
FERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIA
LauraSalcedo51
 
creditohipotecario del bcrp linnk app02.pptx
creditohipotecario del bcrp linnk app02.pptxcreditohipotecario del bcrp linnk app02.pptx
creditohipotecario del bcrp linnk app02.pptx
ssuser6a2c71
 
finanzas-en-mi-colegio-cuarto-de-secundaria.pdf
finanzas-en-mi-colegio-cuarto-de-secundaria.pdffinanzas-en-mi-colegio-cuarto-de-secundaria.pdf
finanzas-en-mi-colegio-cuarto-de-secundaria.pdf
dongimontjoy
 
Bases para la actividad económica_044737.pptx
Bases para la actividad económica_044737.pptxBases para la actividad económica_044737.pptx
Bases para la actividad económica_044737.pptx
gerardomanrique5
 
BBSC® Impuesto Sustitutivo 2024 Ley de Emergencia
BBSC® Impuesto Sustitutivo 2024 Ley de EmergenciaBBSC® Impuesto Sustitutivo 2024 Ley de Emergencia
BBSC® Impuesto Sustitutivo 2024 Ley de Emergencia
Claudia Valdés Muñoz
 
El crédito y los seguros como parte de la educación financiera
El crédito y los seguros como parte de la educación financieraEl crédito y los seguros como parte de la educación financiera
El crédito y los seguros como parte de la educación financiera
MarcoMolina87
 
DERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTE
DERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTEDERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTE
DERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTE
lazartejose60
 
Tratado sobre el dinero, John Maynard Keynes.pdf
Tratado sobre el dinero, John Maynard Keynes.pdfTratado sobre el dinero, John Maynard Keynes.pdf
Tratado sobre el dinero, John Maynard Keynes.pdf
ClaudioFerreyra8
 
SEMINARIO PRACTICO DE AJUSTE POR INFLACION CONTABLE.pdf
SEMINARIO PRACTICO DE   AJUSTE POR INFLACION CONTABLE.pdfSEMINARIO PRACTICO DE   AJUSTE POR INFLACION CONTABLE.pdf
SEMINARIO PRACTICO DE AJUSTE POR INFLACION CONTABLE.pdf
joserondon67
 

Último (20)

Los 6 Pasos hacia una Financiación Exitosa
Los 6 Pasos hacia una Financiación ExitosaLos 6 Pasos hacia una Financiación Exitosa
Los 6 Pasos hacia una Financiación Exitosa
 
SEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONAL
SEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONALSEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONAL
SEGUROS Y FIANZAS EN EL COMERCIO INTERNACIONAL
 
Presentación sobre la Teoría Económica de John Maynard Keynes
Presentación sobre la Teoría Económica de John Maynard KeynesPresentación sobre la Teoría Económica de John Maynard Keynes
Presentación sobre la Teoría Económica de John Maynard Keynes
 
Rice & Jello Delights de yonhalberth cayama
Rice & Jello Delights de yonhalberth cayamaRice & Jello Delights de yonhalberth cayama
Rice & Jello Delights de yonhalberth cayama
 
258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx
258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx
258656134-EJERCICIO-SOBRE-OFERTA-Y-DEMANDA-pptx.pptx
 
La Comisión europea informa sobre el progreso social en la UE.
La Comisión europea informa sobre el progreso social en la UE.La Comisión europea informa sobre el progreso social en la UE.
La Comisión europea informa sobre el progreso social en la UE.
 
PMI sector servicios España mes de mayo 2024
PMI sector servicios España mes de mayo 2024PMI sector servicios España mes de mayo 2024
PMI sector servicios España mes de mayo 2024
 
Importancia-Seguridad-Social-en-Salud-y-Pensiones.pdf
Importancia-Seguridad-Social-en-Salud-y-Pensiones.pdfImportancia-Seguridad-Social-en-Salud-y-Pensiones.pdf
Importancia-Seguridad-Social-en-Salud-y-Pensiones.pdf
 
SERVICIOS DIGITALES EN EL PERÚ - LO QUE DEBES SABER-1.pdf
SERVICIOS DIGITALES EN EL PERÚ  - LO QUE DEBES SABER-1.pdfSERVICIOS DIGITALES EN EL PERÚ  - LO QUE DEBES SABER-1.pdf
SERVICIOS DIGITALES EN EL PERÚ - LO QUE DEBES SABER-1.pdf
 
Capitulo 5 de Kotler, mercados de consumo.
Capitulo 5 de Kotler, mercados de consumo.Capitulo 5 de Kotler, mercados de consumo.
Capitulo 5 de Kotler, mercados de consumo.
 
SEMINARIO - TESIS RESIDUOS SOLIDOS 2024.docx
SEMINARIO - TESIS  RESIDUOS SOLIDOS 2024.docxSEMINARIO - TESIS  RESIDUOS SOLIDOS 2024.docx
SEMINARIO - TESIS RESIDUOS SOLIDOS 2024.docx
 
FERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIA
FERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIAFERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIA
FERIAS INTERNACIONALES DEL ESTADO PLURINACIONAL BOLIVIA
 
creditohipotecario del bcrp linnk app02.pptx
creditohipotecario del bcrp linnk app02.pptxcreditohipotecario del bcrp linnk app02.pptx
creditohipotecario del bcrp linnk app02.pptx
 
finanzas-en-mi-colegio-cuarto-de-secundaria.pdf
finanzas-en-mi-colegio-cuarto-de-secundaria.pdffinanzas-en-mi-colegio-cuarto-de-secundaria.pdf
finanzas-en-mi-colegio-cuarto-de-secundaria.pdf
 
Bases para la actividad económica_044737.pptx
Bases para la actividad económica_044737.pptxBases para la actividad económica_044737.pptx
Bases para la actividad económica_044737.pptx
 
BBSC® Impuesto Sustitutivo 2024 Ley de Emergencia
BBSC® Impuesto Sustitutivo 2024 Ley de EmergenciaBBSC® Impuesto Sustitutivo 2024 Ley de Emergencia
BBSC® Impuesto Sustitutivo 2024 Ley de Emergencia
 
El crédito y los seguros como parte de la educación financiera
El crédito y los seguros como parte de la educación financieraEl crédito y los seguros como parte de la educación financiera
El crédito y los seguros como parte de la educación financiera
 
DERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTE
DERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTEDERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTE
DERECHO BANCARIO DIAPOSITIVA DE CARATER ESTUDIANTE
 
Tratado sobre el dinero, John Maynard Keynes.pdf
Tratado sobre el dinero, John Maynard Keynes.pdfTratado sobre el dinero, John Maynard Keynes.pdf
Tratado sobre el dinero, John Maynard Keynes.pdf
 
SEMINARIO PRACTICO DE AJUSTE POR INFLACION CONTABLE.pdf
SEMINARIO PRACTICO DE   AJUSTE POR INFLACION CONTABLE.pdfSEMINARIO PRACTICO DE   AJUSTE POR INFLACION CONTABLE.pdf
SEMINARIO PRACTICO DE AJUSTE POR INFLACION CONTABLE.pdf
 

Heap sort2

  • 1. 1 Ordenamiento, Heapsort y Colas de prioridad Agustín J. González ELO 320: Estructura de Datos y Algoritmos
  • 2. 2 Ordenamiento y Estadísticas de Orden  Problema de ordenamiento:  Entrada: Una secuencia de n números (a1,a2, ..., an)  Salida: Una permutación (a1´, a2´, a3´,...,an´) de la entrada tal que a1´≤ a2´ ≤ a3´ ≤... ≤ an´  Soluciones:  Insertion-Sort,  merge-sort, heapsort, quicksort. ---> Ω(n lg n)  La estadística de orden i-ésimo de un conjunto de n números, es el i-ésimo número más pequeño.  ---> O(n)
  • 3. 3 1 6 1 4 1 0 7 9 38 142 16 |14 |10 | 8 | 7 | 9 | 3 | 2 | 4 | 1 Heapsort  La estructura de datos “heap” es un arreglo de objetos que pueden ser vistos como un árbol binario completo (sólo pueden faltar nodos al final del último nivel).  Ej. 1 2 3 4 5 6 7 8 9 10
  • 4. 4  El arreglo puede contener más entradas (=length(A)) que el heap (=heap_size(A))  Obviamente heap_size(A) ≤ length(A)  La raíz del árbol es A[1] (Con índices partiendo de 1 aquí)  Dado un índice i de un nodo, su padre, hijo izquierdo e hijo derecho son determinados como:  Parent(i) return  i/2   Left(i) return 2i  Right(i) return 2i+1  Estos procedimientos se pueden implementar como macros o código “in-line”.  Propiedad heap : A [Parent(i)]≥ A [i] para todo nodo diferente de la raíz. Propiedades del heap 16 |14 |10 | 8 | 7 | 9 | 3 | 2 | 4 | 1 1 2 3 4 5 6 7 8 9 10
  • 5. 5 Heapify(A,i) le= Feft(i) ri= Right(i) if( le <= heap_size(A) && A[le] > A[i] ) largest = le else largest = i if ( ri <= heap_size(A) && A[ri] > A[largest] ) largest = ri if (largest != i) exchange A[i] <-> A[largest] Heapify(A, largest) Procedimientos básicos usados en algoritmos de ordenamiento y en colas de prioridad  Heapify(A,i): Entrada: Left(i) y Right(i) son heaps, pero A[i] puede ser menor que sus hijos.  Salida: Heapify mueve A[i] hacia abajo para que el sub-árbol con raíz i sea un heap. Θ (1) O (tamaño subárbol)
  • 6. 6 2n/3 n/3 T(n) ≤ T(2n/3) + Θ(1) ==> T(n) = O(lg n) Análisis de tiempo de Ejecución de Heapify  T(n) = Θ(1) + Tiempo de Heapify sobre uno de los sub-árboles.  El peor caso para el tamaño del sub-árbol es 2n/3. Éste ocurre cuando la última fila está la mitad llena.
  • 7. 7 Build_Heap(A) { heap_size [A] = length [A] for i = length(A) /2  downto 1 do Heapify(A,i) } 4 | 1 | 3 | 2 | 16 | 9 | 10 | 14 | 8 | 7Ejemplo: Construcción del heap: Build_Heap  La construcción del heap se logra aplicando la función heapify de manera de cubrir el arreglo desde abajo hacia arriba.  Notar que los nodos hojas, ya son heap. Éstos están en A[ (n/2+1) .. n].  El procedimiento Build_Heap va a través de los nodos restantes y corre heapify en cada uno.
  • 8. 8  Cada llamado a Heapify tiene un costo O(lgn) y como a lo más hay n de estos llamados, una cota superior para el costo de Build_heap es O(nlgn).  Un mejor análisis conduce a O(n)  ¿Cuántos subárboles (nodos) de altura h hay como máximo?  Para subárboles (nodos) de altura h el costo de Heapify es O(lgn)= O(h).  Luego el costo es           =    ∑∑ == + n h h n h h h nOO(h) n lg 0 lg 0 1 22 2 )2/11( 2/1 2 2 0 = − =∑ ∞ =h h h lgn h 0 0 Build_Heap puede ser acotado por: n ( *2) ( ) 2 2h h h h h O O n O n O n ∞ = = ∴     = = =       ∑ ∑ n/2h+1  Análisis del tiempo de ejecución
  • 9. 9 Heapsort(A) Build_Heap(A) for (i= lenght(A) downto 2 ) do exchange A[1] <-> A[i] heap_size [A] = heap_size [A]-1 Heapify(A,1) Algoritmo Heapsort  1.- Construir un heap invocando a Build_Heap  2.- Intercambiar el primer elemento, la raíz y mayor elemento, del heap con el último.  3.- Restituir la propiedad heap en el heap de n-1 elementos.  El costo de Heapsort es O(n lg n) porque el llamado a Build_Heap toma O(n) y luego tenemos n-1 llamados a Heapify cuyo tiempo es O(lgn).
  • 10. 10 Colas de Prioridad  Heapsort es muy bueno, pero es superado por quicksort (lo veremos luego).  La aplicación más popular de heapsort es para implementar colas de prioridad.  Una cola de prioridad es una estructura de datos que mantiene un conjunto S de elementos cada uno asociado con una clave key.  La cola de prioridad soporta las siguientes operaciones:  Insert(S,x): inserta x en el conjunto S  Maximum(S): retorna el elemento con mayor clave.  Extract-Max(S): remueve y retorna el elemento con mayor clave.  Aplicaciones: - Itineración de tareas en sistemas de tiempo compartido - Colas de prioridad en simuladores conducidos por evento (Event- driven simulator)
  • 11. 11 Tiempo de Heap_Extract_Max : O(lg n) básicamente el tiempo de Heapify Tiempo de Heap_Insert : O(lg n) porque es el recorrido desde la nueva hoja a la raíz. Operaciones en Colas de prioridad  Heap_Maximum(S): retorna el nodo raíz en tiempo θ(1).  Heap_Extract_Max(A) if heap_size[A] <1 then error “Heap undeflow” max = A[1] A[1] = A[heap_size [A]] heap_size [A] = heap_size [A]-1 Heapify(A,1) return max  Heap_Insert(A, key) heap_size [A] = heap_size [A]+1 i = heap_size [A] while (i > 1 and A[Parent(i)] < key) do A[i] = A[Parent(i)] i = Parent(i) A[i] = key
  • 12. 12 Divertimento  Se trata de colorear 9 vértices de esta estrella.  Para ello usted debe partir de un vértice no coloreado, avanzar en línea recta con caminos de largo 2 y podrá colorear el vertice de llegada.  ¿Puede usted colorear nueve vértices? 12 1 2