InicioApuntes Y MonografiasOrdenamiento Heapsort C ANSI
Buenas noches, les dejo un algoritmo avanzado de ordenamiento de numeros, tambien conocido como ordenamiento por montículos


#include <conio.h>
#include <iostream.h>
#include <stdio.h>

void insertamonticulo(int *, int N);
void eliminamonticulo(int *, int N);

void main()
{
clrscr();
int *array; /*Un vector din mico*/
int N;
cout<<"Introduce el n£mero de datos enteros a ordenar: ";
cin>>N;
array=new int[N+1];
array[0]=-1; /*Una l¡nea que puede omitirse. Se¤alo con una banderita
al elemento "apestado"*/

/*El siguiente ciclo pide al usuario los n£meros de 1 a N*/
for(i=1;i<=N;i++)
{
cout<<"Introduce el valor "<<i<<": ";
cin>>array;
}

/*Imprimo los n£meros en el orden que dio el usuario*/
printf("nAntes de la funcion:n";
for(i=1;i<=N;i++)
{
cout<<array<<"n";
}
getch();

insertamonticulo(array, N);

/*Imprimo el resultado que se manifest¢ en el vector luego de llamar a
la funci¢n anterior.*/
printf("nDespues de la funcion que inserta en el monticulo:n";
for(i=1;i<=N;i++)
{
cout<<array<<"n";
}
getch();

/*Y finalmente, se acomodan los n£meros luego de quit rseles sucesivamente la raiz del
mont¡culo*/
eliminamonticulo(array, N);

printf("nDespues de la funci¢n que elimina el monticulo:n";
for(i=1;i<=N;i++)
{
cout<<array<<"n";
}
getch();
}

void insertamonticulo(int *A, int N)
{
/*Esta funci¢n inserta los elementos en un mont¡culo representado como
arreglo.*/
int i, k, aux, band; /*sta £ltima variable es una bandera que se considera
de tipo booleano*/
for (i=2; i<=N; i++)
{
k=i;
band=1; /*1 se considera como verdadero*/
while (k>1 && band==1)
{
band=0;
if (A[k]>A[k/2])
{
aux=A[k/2];
A[k/2]=A[k];
A[k]=aux;
k=k/2; /*El propio lenguaje se encarga de adaptar la parte entera de este
tipo de divisiones entre enteros*/
band=1;
}
}
}
}

void eliminamonticulo(int *A, int N)
{
/*Esta funci¢n elimina la ra¡z del mont¡culo en forma repetida.*/
int i, aux, izq, der, k, ap, bool, mayor;
for (i=N; i>1; i--)
{
aux=A;
A=A[1];
izq=2;
der=3;
k=1;
bool=1; /*bool es 1, o sea verdadero*/
while (izq<i && bool==1)
{
mayor=A[izq];
ap=izq;
if (mayor<A[der] && der!=i)
{
mayor=A[der];
ap=der;
}
if (aux<mayor)
{
A[k]=A[ap];
k=ap;
}
else
bool=0;
izq=k*2;
der=izq+1;
}
A[k]=aux;
}
}


" Esta caria sistituyela por " ) sin espacio entre ellas;
Datos archivados del Taringa! original
0puntos
1,697visitas
1comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Posts Relacionados

Dejá tu comentario

0/2000
1 Comentarios archivados
Del Taringa! original
M@MJFRANZUA9/17/2013+0-0
cout<<array<<"n"; coutt no es anssi

Autor del Post

h
hector5122🇦🇷
Usuario
Puntos0
Posts12
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.