HeapSort

16
INTEGRANTES: Daniela Fernández C.I.: 24.224.414 Jesús Peña C.I.: 23.722.335 Juan Rosas C.I.: 25.916.407 José González C.I.: 25.438.663 HeapSort REPÚBLICA BOLIVARIANA DE VENZUELA MINISTERIO DEL PODER POPULAR PARA LA DEFENSA UNIVERSIDAD NACIONAL EXPERIMENTAL DE LA FUERZA ARMADA U.N.E.F.A MÉRIDA SEDE PRINCIPAL INGENIERÍA DE SISTEMAS LENGUAJE DE PROGRAMACIÓN II

Transcript of HeapSort

Page 1: HeapSort

INTEGRANTES:

Daniela Fernández C.I.: 24.224.414

Jesús Peña C.I.: 23.722.335

Juan Rosas C.I.: 25.916.407

José González C.I.: 25.438.663

HeapSort

REPÚBLICA BOLIVARIANA DE VENZUELA

MINISTERIO DEL PODER POPULAR PARA LA DEFENSA

UNIVERSIDAD NACIONAL EXPERIMENTAL DE LA FUERZA ARMADA

U.N.E.F.A

MÉRIDA – SEDE PRINCIPAL

INGENIERÍA DE SISTEMAS

LENGUAJE DE PROGRAMACIÓN II

Page 2: HeapSort

Heap Sort

Es un árbol binario de altura mínima, en que

los nodos del nivel más bajo están más a la

izquierda posible

La información es almacenada de manera que

al recorrer un camino desde la raíz hacia las

hojas, los datos se encuentran en orden

descendente.

Page 3: HeapSort

Si se presenta este arreglo resultante como unárbol se observa que cada elemento es el padre delos otros elementos

puesto que es una estructura con un grupo el cual

En la segunda parte del procedimiento se realizael proceso de ordenamiento en la cual se recorre elárbol de tal forma que el resultado es una listaordenada de elementos.

z[i], z[i+1]

J <= i/2

Page 4: HeapSort

Algoritmos de selección del

HeapSort

El vector debe tener estructura de montículo,

es decir un árbol en el que los hijos de cada

nodo son siempre menores que el padre

De esta forma no se tiene que recorrer toda

la zona desordenada para encontrar el

elemento máximo, ya que en este caso la

ordenación se realiza en sentido inverso.

Page 5: HeapSort

La estructura es un montículo que facilita

esta búsqueda y la hace del orden

Por lo tanto el costo final será log(n)para cada

elemento que se quiera colocar en la zona

ordenada es decir

log(n)

O(n) = n log(n)

Page 6: HeapSort

EJEMPLOS

Page 7: HeapSort
Page 8: HeapSort
Page 9: HeapSort
Page 10: HeapSort
Page 11: HeapSort
Page 12: HeapSort
Page 13: HeapSort
Page 14: HeapSort

#include <iostream>

using namespace std;

const int N=100; //tamaño del monticulo

int HEAP[N];

int n=0; //puntero del montón

void sort(){

int i, subCor, aux;

cout << "Ordenado Ascendente:";

while(--n>=0){//montón está disminuyendo

cout << HEAP[0]<<",";//raíz del montón

HEAP[0]= HEAP[n];

i=0; //índice de la raíz

subCor=i*2+1; //nodo subordinado

if(HEAP[subCor+1]<HEAP[subCor])

subCor++;

while((HEAP[subCor]<HEAP[i]) && (subCor<=n)){

aux = HEAP[subCor];

HEAP[subCor] = HEAP[i];

HEAP[i] = aux;

i= subCor;

subCor =i*2+1;

if(HEAP[subCor+1]<HEAP[subCor])

subCor++;

}//while

}//while

};//sort

Page 15: HeapSort

int main(){

int numero, i, j, aux;

do{

cout << "ingrese una elemento numerico (0 para salir) " ;

cin >> numero;

if(numero == 0)

break;

HEAP[n++]=numero ;

i= n-1 ;

j=(i-1)/2;

while(HEAP[j]>HEAP[i]){ //Edificio del montón

aux=HEAP[j ];

HEAP[j]= HEAP[i];

HEAP[i]= aux;

i=j;

j = (i-1)/2;

}//while

}while(numero!=0); //do while

sort();//imprimir el montos

}

Page 16: HeapSort