Advertisement
Guest User

Untitled

a guest
May 24th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.29 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4.  
  5. #define NDEBUG
  6.  
  7.  
  8. void merge(int *arr, int l, int m, int r)
  9. {
  10.     int i, j, k;
  11.     int n1 = m - l + 1;
  12.     int n2 =  r - m;
  13.  
  14.  
  15.     int L[n1], R[n2];
  16.  
  17.  
  18.     for (i = 0; i < n1; i++)
  19.         L[i] = arr[l + i];
  20.     for (j = 0; j < n2; j++)
  21.         R[j] = arr[m + 1+ j];
  22.  
  23.  
  24.     i = 0;
  25.     j = 0;
  26.     k = l;
  27.     while (i < n1 && j < n2)
  28.     {
  29.         if (L[i] <= R[j])
  30.         {
  31.             arr[k] = L[i];
  32.             i++;
  33.         }
  34.         else
  35.         {
  36.             arr[k] = R[j];
  37.             j++;
  38.         }
  39.         k++;
  40.     }
  41.  
  42.     while (i < n1)
  43.     {
  44.         arr[k] = L[i];
  45.         i++;
  46.         k++;
  47.     }
  48.  
  49.     while (j < n2)
  50.     {
  51.         arr[k] = R[j];
  52.         j++;
  53.         k++;
  54.     }
  55. }
  56.  
  57. void merge_sort(int *a, int p, int q) {
  58.  
  59.     int m;
  60.     if(p < q)
  61.     {
  62.         m = (q+p)/2;
  63.  
  64.         merge_sort(a,p,m);
  65.         merge_sort(a,m+1,q);
  66.  
  67.         merge(a,p,m,q);
  68.  
  69.     }
  70.  
  71.  
  72. }
  73.  
  74. int main() {
  75.     int numbers[] = {4, 9, 3, 1, 5, 7, 8, 6, 2};
  76.     int expected[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
  77.     int i;
  78.  
  79.     int n = (int) (sizeof(numbers) / sizeof(int));
  80.  
  81.     merge_sort(numbers, 0, n-1);
  82.  
  83.     for (i = 0; i < n; i++) {
  84.  
  85.         printf("%d ",numbers[i]);
  86.  
  87.     }
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement