SlideShare una empresa de Scribd logo
HEAP SORT
EDWIN LOBO HERNANDEZ
¿Qué es HeapSort?
Es un algoritmo de ordenación basado en la
comparación de los elementos a ordenar.
Ordenación por montículos
¿Qué es HeapSort?
• El Heapsort esta basado en el uso de un tipo especial de
un árbol binario llamado montículo.
Heap
Heap
(montículo)
• El acceso a los elementos del Heap en un arreglo, se hace
a través de algunas operaciones aritméticas básicas:
• Hijo izquierdo = 2 * i
• Hijo derecho = 2 * i
• Padre = i / 2
8 5 6 7 4 2
ii i i i i
¿Cómo funciona
HeapSort?
1.Se construye el
montículo inicial a partir
del arreglo original.
2. Se intercambia la
raíz con el ultimo
elemento del
montículo.
3. El ultimo elemento
queda ordenado.
4. El ultimo
elemento se saca
del montículo, no
del arreglo.
5. Se restaura el
montículo haciendo que
el primer elemento baje
a la posición que le
corresponde, si sus hijos
son menores.
6. La raíz vuelve a ser el
mayor del montículo.
7. Se repite el paso
2 hasta que quede
un solo elemento
en el montículo
Complejidad de HeapSort
La complejidad del algoritmo de ordenación por
montículos es
O(n log n).
• Su complejidad en todos los casos es la
misma.
// Ordenación por montículos – HeapSort
public static void ordenacionMonticulos ( int [] v ) {
final int N = v.length;
for ( int nodo = N/2; nodo >= 0; nodo -- ){
hacerMonticulo(v, nodo, N-1); }
for( int nodo = N-1; nodo >= 0; nodo -- ) {
int tmp = v [0];
v[0] = v [nodo];
v [nodo] = tmp;
hacerMonticulo(v, 0, nodo-1);
}
}
Código en java
Código en java
public static void hacerMonticulo(int[] v, int nodo, int fin) {
int izq = 2 * nodo + 1;
int der = izq + 1;
int may;
if ( izq > fin ) return;
if ( der > fin ) may = izq;
else may = v [ izq ] > v [ der ] ? izq : der;
if ( v [ nodo ] < v [ may ] ) {
int tmp = v [ nodo ];
v [ nodo ] = v [ may ];
v [ may ] = tmp;
hacerMonticulo(v, may, fin);
}
}
REFERENCIAS
• http://jorgep.blogspot.com/2010/09/ordenacion-por-monticulos-heap-sort.html
• http://alguienenlafisi.blogspot.com/2011/10/ordenamiento-por-monticulos-heapsort.html
• http://www.mat.uson.mx/omrodriguez/algoritmos/HeapSort/index.html
• http://metodopormonticulos.blogspot.com/2010/11/heapsort.html
¿PREGUNTAS?
GRACIAS

Más contenido relacionado

PPTX
Heap sort (Monticulos)
PDF
Algoritmo de ordenamiento: Heap Sort
PPTX
Método de Heapsort
PPTX
Algoritmo Heap Sort
PPTX
Taller de Base de datos - Unidad 1 SGBD introduccion
PPTX
Ordenamiento QuickSort
PPTX
Binary Heap Tree, Data Structure
Heap sort (Monticulos)
Algoritmo de ordenamiento: Heap Sort
Método de Heapsort
Algoritmo Heap Sort
Taller de Base de datos - Unidad 1 SGBD introduccion
Ordenamiento QuickSort
Binary Heap Tree, Data Structure

La actualidad más candente (20)

PPT
Heap tree
PDF
Complemento del manual de programacion iii sql
PPTX
Programación 3: listas enlazadas
PPTX
Presentacion Algoritmo heapsort
PPTX
Método de ordenamiento por selección
PDF
Estructura de Datos: Pila
PPTX
Estructura de Datos - Unidad 6 Metodos de busqueda
PPTX
Expo busqueda binaria
PDF
Comparativa entre Algoritmos de Ordenamiento
PPTX
Estructura de Datos - Unidad II Recursividad
PPTX
Algoritmo de quicksort
PPT
Heap sort
DOCX
Algoritmos de ordenamiento
PPTX
Colas en programacion
PPT
Apuntadores y listas
PPTX
Ordenamiento parte 2
PPT
Red black tree
Heap tree
Complemento del manual de programacion iii sql
Programación 3: listas enlazadas
Presentacion Algoritmo heapsort
Método de ordenamiento por selección
Estructura de Datos: Pila
Estructura de Datos - Unidad 6 Metodos de busqueda
Expo busqueda binaria
Comparativa entre Algoritmos de Ordenamiento
Estructura de Datos - Unidad II Recursividad
Algoritmo de quicksort
Heap sort
Algoritmos de ordenamiento
Colas en programacion
Apuntadores y listas
Ordenamiento parte 2
Red black tree
Publicidad

Similar a Heap sort (20)

DOCX
Investigacion Formativa Heap Short (Monticulo).docx
DOCX
Metodo de Ordenamiento Heap Sort (Monticulo)
PPSX
Método Heap Sort
PPTX
Heap sort
PPT
Metodo_ordenamiento_Monticulo
PPTX
algoritmo de ordenamiento.pptx
PPTX
HeapSort
PPTX
Algoritmo de almacenamiento - Método Heap Sort
PPT
Heapsort
PDF
Pqueues
PDF
Pqueues
PPTX
PPTX
PPT
Heap sort
PPT
Heap sort2
PPTX
voras.pptx
PDF
PPT
13 heaps
Investigacion Formativa Heap Short (Monticulo).docx
Metodo de Ordenamiento Heap Sort (Monticulo)
Método Heap Sort
Heap sort
Metodo_ordenamiento_Monticulo
algoritmo de ordenamiento.pptx
HeapSort
Algoritmo de almacenamiento - Método Heap Sort
Heapsort
Pqueues
Pqueues
Heap sort
Heap sort2
voras.pptx
13 heaps
Publicidad

Último (20)

PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Curso de generación de energía mediante sistemas solares
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
capacitación de aire acondicionado Bgh r 410
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
Presentación PASANTIAS AuditorioOO..pptx
DOCX
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
historia_web de la creacion de un navegador_presentacion.pptx
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Curso de generación de energía mediante sistemas solares
Guía 5. Test de orientación Vocacional 2.docx
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
capacitación de aire acondicionado Bgh r 410
Documental Beyond the Code (Dossier Presentación - 2.0)
El-Gobierno-Electrónico-En-El-Estado-Bolivia
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
informe_fichas1y2_corregido.docx (2) (1).pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Estrategia de Apoyo de Daylin Castaño (5).pdf
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Presentación PASANTIAS AuditorioOO..pptx
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Sesion 1 de microsoft power point - Clase 1
PRESENTACIÓN GENERAL MIPIG - MODELO INTEGRADO DE PLANEACIÓN
Power Point Nicolás Carrasco (disertación Roblox).pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx

Heap sort

  • 2. ¿Qué es HeapSort? Es un algoritmo de ordenación basado en la comparación de los elementos a ordenar. Ordenación por montículos
  • 3. ¿Qué es HeapSort? • El Heapsort esta basado en el uso de un tipo especial de un árbol binario llamado montículo. Heap
  • 4. Heap (montículo) • El acceso a los elementos del Heap en un arreglo, se hace a través de algunas operaciones aritméticas básicas: • Hijo izquierdo = 2 * i • Hijo derecho = 2 * i • Padre = i / 2 8 5 6 7 4 2 ii i i i i
  • 5. ¿Cómo funciona HeapSort? 1.Se construye el montículo inicial a partir del arreglo original. 2. Se intercambia la raíz con el ultimo elemento del montículo. 3. El ultimo elemento queda ordenado. 4. El ultimo elemento se saca del montículo, no del arreglo. 5. Se restaura el montículo haciendo que el primer elemento baje a la posición que le corresponde, si sus hijos son menores. 6. La raíz vuelve a ser el mayor del montículo. 7. Se repite el paso 2 hasta que quede un solo elemento en el montículo
  • 6. Complejidad de HeapSort La complejidad del algoritmo de ordenación por montículos es O(n log n). • Su complejidad en todos los casos es la misma.
  • 7. // Ordenación por montículos – HeapSort public static void ordenacionMonticulos ( int [] v ) { final int N = v.length; for ( int nodo = N/2; nodo >= 0; nodo -- ){ hacerMonticulo(v, nodo, N-1); } for( int nodo = N-1; nodo >= 0; nodo -- ) { int tmp = v [0]; v[0] = v [nodo]; v [nodo] = tmp; hacerMonticulo(v, 0, nodo-1); } } Código en java
  • 8. Código en java public static void hacerMonticulo(int[] v, int nodo, int fin) { int izq = 2 * nodo + 1; int der = izq + 1; int may; if ( izq > fin ) return; if ( der > fin ) may = izq; else may = v [ izq ] > v [ der ] ? izq : der; if ( v [ nodo ] < v [ may ] ) { int tmp = v [ nodo ]; v [ nodo ] = v [ may ]; v [ may ] = tmp; hacerMonticulo(v, may, fin); } }
  • 9. REFERENCIAS • http://jorgep.blogspot.com/2010/09/ordenacion-por-monticulos-heap-sort.html • http://alguienenlafisi.blogspot.com/2011/10/ordenamiento-por-monticulos-heapsort.html • http://www.mat.uson.mx/omrodriguez/algoritmos/HeapSort/index.html • http://metodopormonticulos.blogspot.com/2010/11/heapsort.html