Guest User

Untitled

a guest
May 17th, 2016
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.82 KB | None | 0 0
  1. void mergeSort(int *A, int p, int r)
  2.  {
  3.  if (p < r)
  4.  {
  5.   int q = (p + r) / 2;
  6.   int static k = 0;
  7.   if (k != 0)
  8.   {
  9.    printf("분리[%d]회 : ",k);
  10.    see(A, p, r);
  11.   }
  12.   k++;
  13.   mergeSort(A, p, q);
  14.   mergeSort(A, q + 1, r);
  15.   merge(A, p, q, r);
  16.  }
  17.  }
  18.  void merge(int *A, int p, int q, int r)
  19.  {
  20.  int * B = (int *)malloc(sizeof(int)* (r + 1));
  21.  int i = p;
  22.  int j = q + 1;
  23.  int t = 0;
  24.  while (i <= q && j <= r)
  25.  {
  26.   if (A[i] < A[j])
  27.    B[t++] = A[i++];
  28.   else
  29.    B[t++] = A[j++];
  30.  }
  31.  while (i <= q)
  32.   B[t++] = A[i++];
  33.  while (j <= r)
  34.   B[t++] = A[j++];
  35.  t = 0, i = p;
  36.  while (i <= r)
  37.   A[i++] = B[t++];
  38.  static int o = 0;
  39.  printf("병합[%d]회 : ", ++o);
  40.  see(A, p, r);
  41.  free(B);
  42.  }
  43.  void see(int *A, int p, int r)
  44.  {
  45.  int i;
  46.  for (i = p; i <= r; i++)
  47.   printf("%d ", A[i]);
  48.  printf("\n");
  49.  }
Advertisement
Add Comment
Please, Sign In to add comment