tonibiro

ASD lab8 prob2

Nov 28th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void interclasare(int a[],int n, int b[], int m, int c[], int h)
  6. {
  7.     int i = 0, j = 0;
  8.     while(i < n && j < m)
  9.     {
  10.         if(a[i] > b[j])
  11.             c[h++] = b[j++];
  12.         else
  13.         {
  14.             if(a[i] < b[j])
  15.                 c[h++] = a[i++];
  16.             else
  17.             {
  18.                 c[h++] = a[i++];
  19.                 c[h++] = b[j++];
  20.             }
  21.         }
  22.     }
  23.     while(i < n)
  24.         c[h++] = a[i++];
  25.     while(j < m)
  26.         c[h++] = b[j++];
  27. }
  28.  
  29. void interclasare_pt_MS(int a[], int s, int m, int d)
  30. {
  31.   int c1 = m-s+1, c2 = d-m;
  32.   int st[c1+1], dr[c2+1];
  33.  
  34.   for(int i = 0; i < c1; ++i)
  35.     st[i] = a[s+i];
  36.   for(int i = 0; i < c2; ++i)
  37.     dr[i] = a[m+i+1];
  38.  
  39.   interclasare(st, c1, dr, c2, a, s);
  40. }
  41.  
  42. void mergeSort(int a[], int s, int d)
  43. {
  44.     if(s < d)
  45.     {
  46.       int m = s + (d - s)/2;
  47.       mergeSort(a, s, m-1);
  48.       mergeSort(a, m+1, d);
  49.  
  50.       interclasare_pt_MS(a, s, m, d);
  51.     }
  52.    
  53. }
  54.  
  55. void afis(int a[], int n)
  56. {
  57.     for(int i = 0; i < n; ++i)
  58.         cout << a[i] << ' ';
  59.     cout << "\n";
  60. }
  61.  
  62. int main()
  63. {
  64.     int a[100],b[100];
  65.     int n, m;
  66.     cin >> n >> m;
  67.     for(int i = 0; i < n; ++i)
  68.         cin >> a[i];
  69.     /*for(int j = 0; j < m; ++j)
  70.         cin >> b[j];
  71.     int c[200];*/
  72.  
  73.     mergeSort(a, 0, n-1);
  74.     afis(a, n);
  75. }
Add Comment
Please, Sign In to add comment