Código
void mezcla(int xa[MAX],int xb[MAX], int na,int nb,int xc[MAX]) { int i,j,k,cmp=0,asi=0; i=j=k=0; while (i<na && j<nb) { if(xa[i]<=xb[j]) { xc[k]=xa[i++]; asi++; } else { xc[k]=xb[j++]; asi++; } k++; cmp++; } if (j<nb) for (int p=j; p<nb; p++) xc[k++]=xb[p]; else for (int p=i; p<na; p++) xc[k++]=xa[p]; printf("\n\n\n -= Tus elementos han sido ordenados =-"); Mapers=cmp; MaperS=asi; //printf("\n -= En total se hicieron -%d- comparaciones y -%d- asignaciones =-",cmp,asi); } //*******************************************************************// //*******************************************************************// void merge(int x[MAX],int n) { int a[MAX],b[MAX],i,j; if (n==0||n==1) return; else { for(i=0;i< n/2; i++) a[i]=x[i]; j=0; for(i=0;i<n; i++) b[j++]=x[i]; merge(a,n/2); merge(b,n-(n/2)); mezcla(a,b,n/2,n-(n/2),x); } }