Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- const int nMax = 500005;
- int n;
- int v[nMax];
- void citire()
- {
- ifstream in("algsort.in");
- in >> n;
- for(int i = 1; i <= n; ++i)
- in >> v[i];
- in.close();
- }
- void merge_sort(int st, int dr)
- {
- static int a[nMax];
- if(st == dr)
- return;
- int mid = (st + dr) / 2;
- merge_sort(st, mid);
- merge_sort(mid + 1, dr);
- for(int i = st; i <= dr; ++i)
- a[i] = v[i];
- int ind1 = st;
- int ind2 = mid + 1;
- int i;
- for(i = st; i <= dr && ind1 <= mid && ind2 <= dr; ++i)
- {
- if(a[ind1] < a[ind2])
- v[i] = a[ind1++];
- else
- v[i] = a[ind2++];
- }
- while(ind1 <= mid)
- v[i++] = a[ind1++];
- while(ind2 <= dr)
- v[i++] = a[ind2++];
- }
- void afisare()
- {
- ofstream out("algsort.out");
- for(int i = 1; i <= n; ++i)
- out << v[i] << " ";
- out.close();
- }
- int main()
- {
- citire();
- merge_sort(1, n);
- afisare();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement