En el siguiente ejemplo si visualiza mejor el algoritmo de Heap Sort:
public static void ordenacion Monticulos (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);
............}
...}
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[nodo] = v[may];
...........v[may] = tmp;
..........hacerMonticulo (v,may, fin);
.........}
}
La complejidad del algoritmo de ordenación por montículos es O(n log n)teniendo en cuenta que el proceso de organizar el montículo en el peor caso solamente tiene que hacer intercambios sobre una sola línea de elementos desde la raíz del árbol hasta alguna de las hojas para un máximo de log n intercambios.



