Advertisement
Guest User

Untitled

a guest
May 25th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.57 KB | None | 0 0
  1. void merge(int tab[], int p, int q, int r)
  2. {
  3.     //int q = (p + r) / 2;
  4.     int* tleft = (int*) malloc((q - p + 2)*sizeof(int));
  5.     int* tright = (int*) malloc((r - q + 1)*sizeof(int));
  6.     for (int i = 0; i < q - p + 1; i++)
  7.     {
  8.         tleft[i] = tab[p + i];
  9.     }
  10.     tleft[q - p + 1] = 1000;
  11.     for (int i = 0; i < r - q; i++)
  12.     {
  13.         tright[i] = tab[q + i + 1];
  14.     }
  15.     tright[r - q] = 1000;
  16.  
  17.     int ri = 0; int le = 0;
  18.     for (int i = p; i <= r; i++)
  19.     {
  20.         if (tright[ri] < tleft[le])
  21.         {
  22.             tab[i] = tright[ri];
  23.             ri++;
  24.         }
  25.         else
  26.         {
  27.             tab[i] = tleft[le];
  28.             le++;
  29.         }
  30.     }
  31.     return;
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement