Professional Documents
Culture Documents
CAJAMARCA
FACULTAD DE INGENIERA
Cajamarca,03
Cajamarca,06
dede
Octubre
del 2016
julio
del 2016
Ejemplo:
1
5
6
0
0
8
1
6
4
4
2
7
1
2
3
5
CONSTRUCCIN DE UN MONTCULO
1. Se inserta el elemento en la primera posicin disponible.
2. Se verifica si su valor es mayor que el de su padre. Si se cumple esta condicin,
entonces se efecta el intercambio. Si no, entonces el algoritmo se detiene y el
elemento queda ubicado en su posicin correcta.
*** El paso 2 se aplica de manera recursiva mientras el elemento tenga un padre.
ELIMINACIN DE LA RAZ
El proceso para obtener los elementos ordenados se efecta eliminando la raz del
montculo de forma repetida n veces.
1. Se remplaza la raz con el elemento que ocupa la ltima posicin del montculo.
2. Se crea un montculo con los elementos restantes.
IMPLEMENTACIN EN JAVA
Mtodo HeapSort
package ordenamiento;
public class HeapSort {
private static int N;
/* Ordenar Funcin */
public static void sort(int arr[]) {
heapify(arr);
for (int i = N; i > 0; i--) {
swap(arr, 0, i);
N = N - 1;
maxheap(arr, 0);
}
}
/* Funcin para construir un Monticulo */
public static void heapify(int arr[]) {
N = arr.length - 1;
for (int i = N / 2; i >= 0; i--)
maxheap(arr, i);
}
/* Funcin para intercambiar elemento ms grande en el Monticulo
*/
Prueba HeapSort
package ordenamiento;
import java.util.Scanner;
public class PruebaHeapSort {
public static void main(String[] args) {
Scanner leer = new Scanner(System.in);
System.out.println("\t\t=== Probando HeapSort ===\n");
System.out.println("\tARREGLO INICIALIZADO\n");
int v1[] = { 15, 60, 8, 16, 44, 27, 12, 35 };
System.out.println("Areglo Original");
for (int i = 0; i < v1.length; i++) {
System.out.print(v1[i] + "\t");
}
System.out.println();
HeapSort.sort(v1);
System.out.println("\nArreglo ordenado\n");
for (int i = 0; i < v1.length; i++) {
System.out.print(v1[i] + "\t");
}
/* Acepta el nmero de elementos */
System.out.println("\n");
System.out.println("\tARREGLO INGRESADO POR TECLADO\n");
System.out.println("Introduzca el nmero de elementos ");
int n = leer.nextInt();
/* Hacer arreglo de n elementos */
int v[] = new int[n];
/* Aceptar los elementos */
for (int i = 0; i < v.length; i++) {
System.out.print("Ingrese N " + (i + 1) + ": ");
v[i] = leer.nextInt();
}
/* Imprime Elementos Desordenados */
for (int i = 0; i < v.length; i++) {
System.out.print(v[i] + "\t");
}
/* Mtodo de llamada clase */
HeapSort.sort(v);
/* Imprimir el arreglo ordenad0o */
System.out.println("\nElementos Ordenados ");
for (int i = 0; i < v.length; i++) {
System.out.print(v[i] + "\t");
}
leer.close();
}
}