Advertisement
Nita_Cristian

Merge sort

Nov 16th, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. int a[10001];
  5.  
  6. void Interclasare(int st, int mij, int dr)
  7. {
  8.     int c[1001];
  9.     int i = st, j = mij, ind = st;
  10.  
  11.     while(i < mij && j < dr)
  12.     {
  13.         if(a[i] < a[j])
  14.         {
  15.             c[ind++] = a[i++];
  16.         }
  17.         else
  18.         {
  19.             c[ind++] = a[j++];
  20.         }
  21.     }
  22.     while(i < mij)
  23.     {
  24.         c[ind++] = a[i++];
  25.     }
  26.     while(j < dr)
  27.     {
  28.         c[ind++] = a[j++];
  29.     }
  30.     for(int i = st; i < dr; i++)
  31.     {
  32.         a[i] = c[i];
  33.     }
  34. }
  35.  
  36. void Merge(int st, int dr)
  37. {
  38.     if(dr <= st)
  39.     {
  40.         return;
  41.     }
  42.  
  43.     int mij = (st + dr) / 2;
  44.  
  45.     Merge(st, mij);
  46.  
  47.     Merge(mij+1, dr);
  48.  
  49.     Interclasare(st, mij, dr);
  50. }
  51.  
  52. int main()
  53. {
  54.     int n;
  55.  
  56.     cin >> n;
  57.  
  58.     for(int i = 0; i < n; i++)
  59.     {
  60.         cin >> a[i];
  61.     }
  62.  
  63.     Merge(0,n);
  64.  
  65.     for(int i = 0; i < n; i++)
  66.     {
  67.         cout << a[i] << ' ';
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement