Pagini recente » Cod sursa (job #530403) | Cod sursa (job #1093465) | Cod sursa (job #344483) | Cod sursa (job #1261475) | Cod sursa (job #1934687)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int N;
int v[500001];
void MergeSort(int p, int m, int q)
{
vector <int> b;
int i,j;
vector <int>::iterator it;
i=p;
j=m+1;
while(i<=m && j<=q)
if(v[i]<v[j])
b.push_back(v[i++]);
else
b.push_back(v[j++]);
while(i<=m) b.push_back(v[i++]);
while(j<=q) b.push_back(v[j++]);
for(i=p,it=b.begin(); i<=q; ++i,++it)
v[i]=*it;
}
void divide(int p, int q)
{
if(q>p)
{
int m=(p+q)/2;
divide(p,m);
divide(m+1,q);
MergeSort(p,m,q);
}
}
int main()
{
int i;
fin>>N;
for(i=1; i<=N; ++i) fin>>v[i];
divide(1,N);
for(i=1; i<=N; ++i)
fout<<v[i]<<' ';
return 0;
}