La Web del Programador: Comunidad de Programadores
 
    Pregunta:  7044 - ALGORITMO DE FUSION
Autor:  Daniel Edgardo bastonero
Quisiera saber si alguien sabe o la implementacion del algoritmo de ordenamiento por fusion de la forma correcta para ordenar un vector que se encuntra desordenado.

  Respuesta:  sinapse
Aqui tienes una version recursiva para ordenar tablas de enteros.
Empieza ordenado subtablas pequeñas (de tamaño 1, sigue la recursividad) y las va combinando (al ir volviendo de las llamadas recursivas). No se te olvide incluir y ::

int MergeSort(iint * T,int P,int U)
{
int M;

if (P>U) return -1;
else {
M=(P+U)/2; // Este es el pivote
if (MergeSort(T,P,M)==-1) return -1;
if (MergeSort(T,M+1,U)==-1) return -1;
Combinar(T,P,U,M);
}
}

int Combinar(int * T,int P,int U, int M)
{
int * Aux; // Tabla auxiliar
int i,j,k; // Indices para recorrer las tablas

if ((Aux=(int*)malloc((U-P+1)*sizeof(int)))==NULL) return -1;

i=P; j=M+1; K=p;

while ((i<=M)&&(j<=U)) {
if (T[i]else Aux[k]=T[j++];
k++;
}

if (i>M) // Si se ha pasado i
while(j<=U) Aux[k++]]=T[j++];
else
while(i<=M) Aux[k++]=T[i++];

T=Aux; // Hay que copiar Aux en T, pero no aseguro que funcione asi
free(Aux);
}

Pues eso, si quieres una version no recursiva o algun otro algoritmo solo escribeme.
Salu2