Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: mapers en 22 Enero 2011, 09:26 am



Título: problema con el mergesort
Publicado por: mapers en 22 Enero 2011, 09:26 am
 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
  1. void mezcla(int xa[MAX],int xb[MAX], int na,int nb,int xc[MAX])
  2. {
  3.  int i,j,k,cmp=0,asi=0;
  4.  i=j=k=0;
  5.  while (i<na && j<nb)
  6.   {
  7.    if(xa[i]<=xb[j])
  8.     {
  9.      xc[k]=xa[i++];
  10.      asi++;
  11.     }
  12.    else
  13.     {
  14.      xc[k]=xb[j++];
  15.      asi++;
  16.     }
  17.    k++;
  18.    cmp++;
  19.   }
  20.  if (j<nb)
  21.   for (int p=j; p<nb; p++)
  22.    xc[k++]=xb[p];
  23.  else
  24.   for (int p=i; p<na; p++)
  25.   xc[k++]=xa[p];
  26.  printf("\n\n\n -= Tus elementos han sido ordenados =-");
  27.  Mapers=cmp;
  28.  MaperS=asi;
  29.  //printf("\n -= En total se hicieron -%d- comparaciones y -%d- asignaciones =-",cmp,asi);
  30.  
  31. }
  32. //*******************************************************************//
  33. //*******************************************************************//
  34. void merge(int x[MAX],int n)
  35. {
  36.  int a[MAX],b[MAX],i,j;
  37.  if (n==0||n==1)
  38.   return;
  39.  else
  40.   {
  41.    for(i=0;i< n/2; i++)
  42.     a[i]=x[i];
  43.    j=0;
  44.    for(i=0;i<n; i++)
  45.     b[j++]=x[i];
  46.    merge(a,n/2);
  47.    merge(b,n-(n/2));
  48.    mezcla(a,b,n/2,n-(n/2),x);
  49.   }
  50. }
  51.  
  52.