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;
#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;