Pagini recente » Cod sursa (job #1244903) | Cod sursa (job #2464327) | Cod sursa (job #1703972) | Cod sursa (job #2619607) | Cod sursa (job #627796)
Cod sursa(job #627796)
//#include<iostream>
#include<fstream>
using namespace std;
int n,v[500000];
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[500000];
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];
}
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 ()
{
citire();
deti(0,n-1);
ofstream fout("algsort.out");
for (int i=0;i<n;i++)
fout<<v[i]<<' ';
fout.close();
return 0;
}