Guest User

Untitled

a guest
Sep 23rd, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int a[1000], c[1000], d[1000];
  6.  
  7. void merge(int l, int m, int r) {
  8.     for (int i = 0; i < m - l + 1; i++) {
  9.         c[i] = a[l + i];
  10.     }
  11.     for (int i = 0; i < r - (m + 1) + 1; i++) {
  12.         d[i] = a[m + 1 + i];
  13.     }
  14.     int i = 0, j = 0;
  15.     for (int k = l; k <= r; k++) {
  16.         if (i >= m - l + 1) {
  17.             a[k] = d[j];
  18.             j++;
  19.         }
  20.         else if (j >= r - (m + 1) + 1) {
  21.             a[k] = c[i];
  22.             i++;
  23.         }
  24.         else if (c[i] < d[j]) {
  25.             a[k] = c[i];
  26.             i++;
  27.         }
  28.         else {
  29.             a[k] = d[j];
  30.             j++;
  31.         }
  32.     }
  33. }
  34.  
  35. void mergeSort(int l, int r) {
  36.     if (r - l > 0) {
  37.         int m = (r + l) / 2;
  38.         mergeSort(l, m);
  39.         mergeSort(m + 1, r);
  40.         merge(l, m, r);
  41.     }
  42. }
  43.  
  44. int main() {
  45.     int n;
  46.     cin >> n;
  47.     for (int i = 0; i < n; i++) {
  48.         cin >> a[i];
  49.     }
  50.     mergeSort(0, n - 1);
  51.     for (int i = 0; i < n; i++) {
  52.         cout << a[i] << ' ';
  53.     }
  54.     return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment