Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- void merge_series (int *arr, int first, int last_1, int last_2, int *dubl)
- {
- int i = first;
- int j = last_1+1;
- int c = 0;
- for (c = first; c <= last_2; c++)
- if (j > last_2)
- dubl[c] = arr[i++];
- else if (i > last_1)
- dubl[c] = arr[j++];
- else if (arr[i] <= arr[j])
- dubl[c] = arr[i++];
- else dubl[c] = arr[j++];
- }
- void sort (int *arr, int first, int last, int *dubl)
- {
- int middle = (first + last)/2;
- if (first < middle)
- sort (arr, first, middle, dubl);
- if (middle + 1 < last)
- sort (arr, middle+1, last, dubl);
- merge_series (arr, first, middle, last, dubl);
- for (int i = first; i <= last; i++)
- {
- arr[i] = dubl[i];
- //cout << dubl[i] << " ";
- }
- //cout << endl;
- }
- void merge_sort (int *arr, int razmer)
- {
- int *dubl = new int[razmer];
- sort (arr, 0, razmer-1, dubl);
- }
- int main()
- {
- int n=0;
- cin >> n;
- int *arr = new int[n];
- for (int i=0; i<n; i++)
- cin >> arr[i];
- merge_sort (arr, n);
- for (int i=0; i<n; i++)
- cout << arr[i] << " ";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement