SHARE
TWEET

Untitled

a guest Oct 19th, 2019 74 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include<cmath>
  3. #include<climits>
  4. #include<algorithm>
  5. using namespace std;
  6. void merge_series(double* A, int b, int c, int e, double* D)
  7. {
  8.     int i = b, j = c + 1, k;
  9.     for (k = b; k <= e; k++)
  10.         if (j > e) D[k] = A[i++];
  11.         else if (i > c) D[k] = A[j++];
  12.         else if (A[i] <= A[j]) D[k] = A[i++];
  13.         else D[k] = A[j++];
  14. }
  15. void merge_sort(double* A, int n)
  16. {
  17.     int s, b, c, e;
  18.     double* D = new double[n];
  19.     for (s = 1; s < n; s *= 2) {
  20.         for (b = 0; b < n; b += s * 2) {
  21.             c = min(b + s - 1, n - 1);
  22.             e = min(c + s, n - 1);
  23.             merge_series(A, b, c, e, D);
  24.         }
  25.         for (b = 0; b < n; b++) A[b] = D[b];
  26.     }
  27.     for (b = 0; b < n; b++) cout << A[b] << " ";
  28.     delete[] D;
  29. }
  30.  
  31. int main()
  32. {
  33.     freopen("input.txt", "r", stdin);
  34.     freopen("output.txt", "w", stdout);
  35.     int n;
  36.     cin >> n;
  37.     double* A = new double[n];
  38.     for (int i = 0; i < n; i++)
  39.     {
  40.         cin >> A[i];
  41.     }
  42.     merge_sort(A, n);
  43.     return 0;
  44. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top