La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1788 - POR FAVOR INFORMACION SOBRE LOS MÉTODOS DE ORDENACIÓN.
Autor:  Mauricio Alcántara Méndez
Deseo información sobre el método de montoculo o head sort.Agradezco de antemano cualquier informacion al respecto.

  Respuesta:  Erwin Villamizar Pérez
Vea hermano.. aqui le envio la función para ordenar un array de enteros por medio del método de Ordenación llamado HeapSort, pasando como argumento a HeapSort un puntero al vector de enteros, y a la funcion prioridad paso como argumentos: un puntero al vector de enteros, la prioridad en la cual se va a manejar, y la cantidad maxima de datos a ordenar, la cual va disminuyendo.. espero que te sirva..

void heapsort(int *v)
{
int opcord,i,j,prio,n;
opcord=tipo_ord();
prio=(MAX-1)/2;
prioridad(v,prio,MAX-1,opcord);
prio=MAX-2;
n=MAX-2;
while(n>=0)
{
prio=n/2;
prioridad(v,prio,n);
n=n-1;
}
}
void prioridad(int *v,int prio,int n)
{
int i,j,t;
i=prio+prio;
j=i+1;
while(prio>=0)
{
while(j<=(i+2) && j<=n)
{
if(opcord==1)
{
if(v[prio] < v[j])
{
t=v[j]; v[j]=v[prio]; v[prio]=t;
}
j=j+1;
}
else
{
if(v[prio] > v[j])
{
t=v[j]; v[j]=v[prio]; v[prio]=t;
}
j=j+1;
}
}
prio=prio-1;
i=prio+prio;
j=i+1;

}
t=v[n]; v[n]=v[0]; v[0]=t;
}

  Respuesta:  Ivan Bravo Sierra
Esto viene en el libro de "Estructuras de Datos"
de Cairó y Guardati
editorial
Mac Graw Hill
pag, 318