Pagini recente » Cod sursa (job #3206313) | Cod sursa (job #2430038) | Cod sursa (job #301640) | Cod sursa (job #1348337) | Cod sursa (job #893927)
Cod sursa(job #893927)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 500005
using namespace std;
int n, v[nmax];
vector <int> temp;
int mergesort(int st, int dr) {
if(st == dr) return 1;
int mij = (st + dr) / 2, i, j;
mergesort(st, mij);
mergesort(mij+1, dr);
temp.clear();
for(i = st, j = mij+1; i <= mij && j <= dr; ) {
if(v[i] < v[j]) temp.push_back(v[i]), i++;
else temp.push_back(v[j]), j++;
}
while(i <= mij) temp.push_back(v[i]), i++;
while(j <= dr) temp.push_back(v[j]), j++;
for(i = st, j = 0; i <= dr; i++) v[i] = temp[j], j++;
return 0;
}
int main() {
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(int i=1; i<=n; i++) f>>v[i];
mergesort(1, n);
for(int i=1; i<=n; i++) g<<v[i]<<" "; g<<"\n";
return 0;
}