acobzew

sem4-problem3-mergesort

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