acobzew

mergeSort

Apr 21st, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.64 KB | None | 0 0
  1. #include <stdio.h>
  2. #define MAX_LEN 3000
  3.  
  4. int a[MAX_LEN], b[MAX_LEN];
  5.  
  6. void mergeSort(int l, int r)
  7. {
  8.     if (l == r)
  9.         return;
  10.  
  11.     int m = (l + r) / 2;
  12.     mergeSort(l, m);
  13.     mergeSort(m + 1, r);
  14.  
  15.     int i = l, j = m + 1, k = l;
  16.     while (i <= m || j <= r)
  17.         if (i > m || (j <= r && a[i] > a[j]))
  18.             b[k++] = a[j++];
  19.         else
  20.             b[k++] = a[i++];
  21.     for (i = l; i <= r; i++)
  22.         a[i] = b[i];
  23. }
  24.  
  25. int main(int argc, char const *argv[])
  26. {
  27.     int i, n;
  28.     printf("Number of elements: ");
  29.     scanf("%d", &n);
  30.     for (i = 0; i < n; i++)
  31.         scanf("%d", &a[i]);
  32.     mergeSort(0, n - 1);
  33.     for (i = 0; i < n; i++)
  34.         printf("%d ", a[i]);
  35.     printf("\n");
  36.     return 0;
  37. }
Advertisement
Add Comment
Please, Sign In to add comment