2. Métodos de Ordenamiento
• Los métodos de ordenamiento son
ampliamente usados en el desarrollo de
software, debido a que posibilitan tomar un
grupo de datos (ya sean numéricos o
alfabéticos) y ordenarlos de manera
secuencial dentro de un tipo de dato de
agrupación o arreglo.
3. Heap Sort: Que es?
• Es un método de ordenamiento basado con
comparación.
• Usa el montículo (Heap) como estructura de datos,
el cual representa un árbol.
• Mas lento que otros métodos, pero mas eficaz en
escenarios mas rigurosos.
• Se define como no Recursivo y No Estable.
4. Pseudocódigo del algoritmo
Descripción en pseudocódigo del
algoritmo. Se pueden encontrar
descripciones de las
operaciones insertar_en_monticulo
y extraer_cima_del_monticulo en el
artículo sobre montículos. function heapsort(array A[0..n]):
montículo M
integer i := 124578
for i = 0..n:
insertar_en_monticulo(M, A[i])
for i = 0..n:
A[i] = extraer_cima_del_monticulo(M)
return A
5. Video de como trabaja este
metodo de ordenamiento
• http://www.youtube.com/watch?v=qRu-
J6S5nEQ
6. // Ordenacion por monticulos - 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);
}
}
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);
}
}