problema con el mergesort

Iniciado por mapers, 22 Enero 2011, 09:26 AM

0 Miembros y 1 Visitante están viendo este tema.

mapers

 holas señores nose creo que algo le falta a este pedaso de codigo que no me quiere funcionar en mi programa a ver denle una  ojeada
Código (cpp) [Seleccionar]

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);
   }
}