Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <cmath>
- using namespace std;
- void mergeSort(vector<int>& a, int start, int end)
- {
- if (start + 1 >= end)
- {
- return;
- }
- mergeSort(a, start, start + (end - start) / 2);
- mergeSort(a, start + (end - start) / 2, end);
- vector<int> b;
- int b1 = start;
- int e1 = start + (end - start) / 2;
- int b2 = start + (end - start) / 2;
- int e2 = end;
- while (b.size() < end - start)
- {
- if (b1 == e1 || (b2 < e2 && a[b2] < a[b1]))
- {
- b.push_back(a[b2]);
- b2++;
- }
- else
- {
- b.push_back(a[b1]);
- b1++;
- }
- }
- for (int i = start; i < end; i++)
- {
- a[i] = b[i-start];
- }
- }
- int main()
- {
- srand(time(0));
- ifstream fin("sort.in");
- ofstream fout("sort.out");
- int n = 0;
- cin >> n;
- vector<int> v;
- v.resize(n);
- for (int i = 0; i < n; ++i)
- {
- cin >> v[i];
- }
- mergeSort(v, 0, n);
- for (int i = 0;i<n;i++)
- cout << v[i] << " ";
- fin.close();
- fout.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement