HEAP SORTEDWIN LOBO HERNANDEZ
¿Qué es HeapSort?Es un algoritmo de ordenación basado en lacomparació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 deun árbol binario llamado montículo.Heap
Heap(montículo)• El acceso a los elementos del Heap en un arreglo, se hacea través de algunas operaciones aritméticas bási...
¿Cómo funcionaHeapSort?1.Se construye elmontículo inicial a partirdel arreglo original.2. Se intercambia laraíz con el ult...
Complejidad de HeapSortLa complejidad del algoritmo de ordenación pormontículos esO(n log n).• Su complejidad en todos los...
// Ordenación por montículos – HeapSortpublic static void ordenacionMonticulos ( int [] v ) {final int N = v.length;for ( ...
Código en javapublic static void hacerMonticulo(int[] v, int nodo, int fin) {int izq = 2 * nodo + 1;int der = izq + 1;int ...
REFERENCIAS• http://jorgep.blogspot.com/2010/09/ordenacion-por-monticulos-heap-sort.html• http://alguienenlafisi.blogspot....
¿PREGUNTAS?
GRACIAS
Próxima SlideShare
Cargando en…5
×

Heap sort

986 visualizaciones

Publicado el

Presentación hecha para el curso de Análisis de algoritmos. Heap sort u ordenación por montículos es un algoritmo como su nombre lo indica para ordenar elementos en un arreglo o vector basado en la comparación de sus elemntos utilizando una estructura de datos llamada heap (Monticulo), la cual es un tipo de árbol.

Publicado en: Tecnología
0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
986
En SlideShare
0
De insertados
0
Número de insertados
3
Acciones
Compartido
0
Descargas
0
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Heap sort

  1. 1. HEAP SORTEDWIN LOBO HERNANDEZ
  2. 2. ¿Qué es HeapSort?Es un algoritmo de ordenación basado en lacomparación de los elementos a ordenar.Ordenación por montículos
  3. 3. ¿Qué es HeapSort?• El Heapsort esta basado en el uso de un tipo especial deun árbol binario llamado montículo.Heap
  4. 4. Heap(montículo)• El acceso a los elementos del Heap en un arreglo, se hacea través de algunas operaciones aritméticas básicas:• Hijo izquierdo = 2 * i• Hijo derecho = 2 * i• Padre = i / 28 5 6 7 4 2ii i i i i
  5. 5. ¿Cómo funcionaHeapSort?1.Se construye elmontículo inicial a partirdel arreglo original.2. Se intercambia laraíz con el ultimoelemento delmontículo.3. El ultimo elementoqueda ordenado.4. El ultimoelemento se sacadel montículo, nodel arreglo.5. Se restaura elmontículo haciendo queel primer elemento bajea la posición que lecorresponde, si sus hijosson menores.6. La raíz vuelve a ser elmayor del montículo.7. Se repite el paso2 hasta que quedeun solo elementoen el montículo
  6. 6. Complejidad de HeapSortLa complejidad del algoritmo de ordenación pormontículos esO(n log n).• Su complejidad en todos los casos es lamisma.
  7. 7. // Ordenación por montículos – HeapSortpublic 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. 8. Código en javapublic 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. 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
  10. 10. ¿PREGUNTAS?
  11. 11. GRACIAS

×