SlideShare una empresa de Scribd logo
1 de 12
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

Estructura de archivos y sistema
Estructura de archivos y sistemaEstructura de archivos y sistema
Estructura de archivos y sistemaJuan Soubervielle
 
Clase 2 Modelo De Datos
Clase 2   Modelo De DatosClase 2   Modelo De Datos
Clase 2 Modelo De Datososwchavez
 
1.4.1 Representación en memoria estática y dinámica.pptx
1.4.1 Representación en memoria estática y dinámica.pptx1.4.1 Representación en memoria estática y dinámica.pptx
1.4.1 Representación en memoria estática y dinámica.pptxFernando Solis
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoLutzo Guzmán
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoJosé Antonio Sandoval Acosta
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacionLuis Igoodbad
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaAngel Vázquez Patiño
 
Arbol binario de busqueda java
Arbol binario de busqueda   javaArbol binario de busqueda   java
Arbol binario de busqueda javaFranco Guamán
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesJosé Antonio Sandoval Acosta
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamientodeff000001
 

La actualidad más candente (20)

Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
Estructura de archivos y sistema
Estructura de archivos y sistemaEstructura de archivos y sistema
Estructura de archivos y sistema
 
Clase 2 Modelo De Datos
Clase 2   Modelo De DatosClase 2   Modelo De Datos
Clase 2 Modelo De Datos
 
1.4.1 Representación en memoria estática y dinámica.pptx
1.4.1 Representación en memoria estática y dinámica.pptx1.4.1 Representación en memoria estática y dinámica.pptx
1.4.1 Representación en memoria estática y dinámica.pptx
 
Algoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamientoAlgoritmos de busqueda - hash truncamiento
Algoritmos de busqueda - hash truncamiento
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Hash mitad al cuadrado pdf
Hash mitad al cuadrado pdfHash mitad al cuadrado pdf
Hash mitad al cuadrado pdf
 
Colas en programacion
Colas en programacionColas en programacion
Colas en programacion
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Ordenamiento parte 2
Ordenamiento parte 2Ordenamiento parte 2
Ordenamiento parte 2
 
Programación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en javaProgramación 3: listas y conjuntos en java
Programación 3: listas y conjuntos en java
 
Arbol binario de busqueda java
Arbol binario de busqueda   javaArbol binario de busqueda   java
Arbol binario de busqueda java
 
Estructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no linealesEstructura de Datos - Unidad 4 Estructuras no lineales
Estructura de Datos - Unidad 4 Estructuras no lineales
 
Modelo entidad relacion
Modelo entidad relacionModelo entidad relacion
Modelo entidad relacion
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Aritmetica Modular
Aritmetica ModularAritmetica Modular
Aritmetica Modular
 
Metodos de-ordenamiento
Metodos de-ordenamientoMetodos de-ordenamiento
Metodos de-ordenamiento
 
concepto de estructuras de datos
concepto de estructuras de datosconcepto de estructuras de datos
concepto de estructuras de datos
 
Arboles
ArbolesArboles
Arboles
 

Similar a Heap sort

Expo fibonacci
Expo fibonacciExpo fibonacci
Expo fibonaccismarthur
 
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 SparkSoftware 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 FADAJose 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_sem10chrisflores001
 
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-programacionLUISFERNANDOMORENOSO2
 
Introduccion a la programación
Introduccion a la programaciónIntroduccion a la programación
Introduccion a la programaciónfpcanizaresg
 
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áticasyuli02
 

Similar a Heap sort (20)

heapsort.ppt
heapsort.pptheapsort.ppt
heapsort.ppt
 
Heap Sort
Heap SortHeap Sort
Heap Sort
 
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
 

Último

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...JaquelineJuarez15
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofJuancarlosHuertasNio1
 

Último (20)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
El gusano informático Morris (1988) - Julio Ardita (1995) - Citizenfour (2014...
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
ejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sofejercicios pseint para aprogramacion sof
ejercicios pseint para aprogramacion sof
 

Heap sort

  • 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