Pagini recente » Cod sursa (job #2689118) | Cod sursa (job #2303021) | Cod sursa (job #1450800) | Cod sursa (job #2066452) | Cod sursa (job #627850)
Cod sursa(job #627850)
//#include<iostream>
#include<fstream>
//#include<ctime>
using namespace std;
int n,v[500001];
#define startt clock_t start=clock();
#define afist cout<<clock()-start<<' ';
void citire()
{
//cout<<"Sir initial: "; //*
ifstream fin("algsort.in");
fin>>n;
for (int i=0;i<n;i++)
fin>>v[i];
// cout<<v[i]<<' '; //*
//cout<<endl;
fin.close();
}
void mergesort(int i, int mij, int j)
{
int v2[500001];
//memset(v2,0,sizeof(v2));
int i1=i,i2=mij+1;
int k=0;
while (i1<=mij && i2<=j)
{
if (v[i1]<v[i2])
v2[k++]=v[i1++];
else
v2[k++]=v[i2++];
}
while (i1<=mij) v2[k++]=v[i1++];
while (i2<=j) v2[k++]=v[i2++];
int cop=i;
for (int d=0;d<=(j-i);d++)
v[cop++]=v2[d];
}
/*inline void pr(int a, int b, int c)
{ cout<<a<<' '<<b<<' '<<c<<'\n';
}*/
void deti (int i, int j)
{
if (i<j)
{
int mij=(i+j)/2;
deti(i,mij);
deti(mij+1,j);
mergesort(i,mij,j);
}
}
int main ()
{
//startt
citire();
deti(0,n-1);
ofstream fout("algsort.out");
for (int i=0;i<n;i++)
fout<<v[i]<<' ';
fout.close();
//afist
return 0;
}