Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- void interclasare(int a[],int n, int b[], int m, int c[], int h)
- {
- int i = 0, j = 0;
- while(i < n && j < m)
- {
- if(a[i] > b[j])
- c[h++] = b[j++];
- else
- {
- if(a[i] < b[j])
- c[h++] = a[i++];
- else
- {
- c[h++] = a[i++];
- c[h++] = b[j++];
- }
- }
- }
- while(i < n)
- c[h++] = a[i++];
- while(j < m)
- c[h++] = b[j++];
- }
- void interclasare_pt_MS(int a[], int s, int m, int d)
- {
- int c1 = m-s+1, c2 = d-m;
- int st[c1+1], dr[c2+1];
- for(int i = 0; i < c1; ++i)
- st[i] = a[s+i];
- for(int i = 0; i < c2; ++i)
- dr[i] = a[m+i+1];
- interclasare(st, c1, dr, c2, a, s);
- }
- void mergeSort(int a[], int s, int d)
- {
- if(s < d)
- {
- int m = s + (d - s)/2;
- mergeSort(a, s, m-1);
- mergeSort(a, m+1, d);
- interclasare_pt_MS(a, s, m, d);
- }
- }
- void afis(int a[], int n)
- {
- for(int i = 0; i < n; ++i)
- cout << a[i] << ' ';
- cout << "\n";
- }
- int main()
- {
- int a[100],b[100];
- int n, m;
- cin >> n >> m;
- for(int i = 0; i < n; ++i)
- cin >> a[i];
- /*for(int j = 0; j < m; ++j)
- cin >> b[j];
- int c[200];*/
- mergeSort(a, 0, n-1);
- afis(a, n);
- }
Add Comment
Please, Sign In to add comment