Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include<cmath>
- #include<climits>
- #include<algorithm>
- using namespace std;
- void merge_series(double* A, int b, int c, int e, double* D)
- {
- int i = b, j = c + 1, k;
- for (k = b; k <= e; k++)
- if (j > e) D[k] = A[i++];
- else if (i > c) D[k] = A[j++];
- else if (A[i] <= A[j]) D[k] = A[i++];
- else D[k] = A[j++];
- }
- void merge_sort(double* A, int n)
- {
- int s, b, c, e;
- double* D = new double[n];
- for (s = 1; s < n; s *= 2) {
- for (b = 0; b < n; b += s * 2) {
- c = min(b + s - 1, n - 1);
- e = min(c + s, n - 1);
- merge_series(A, b, c, e, D);
- }
- for (b = 0; b < n; b++) A[b] = D[b];
- }
- for (b = 0; b < n; b++) cout << A[b] << " ";
- delete[] D;
- }
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- int n;
- cin >> n;
- double* A = new double[n];
- for (int i = 0; i < n; i++)
- {
- cin >> A[i];
- }
- merge_sort(A, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement