Pagini recente » Cod sursa (job #1812290) | Cod sursa (job #597405) | Cod sursa (job #1751447) | Cod sursa (job #233623) | Cod sursa (job #2619113)
#include <fstream>
using namespace std;
int w[500005];
void interclasare(int v[], const int& st, const int& mij, const int& dr)
{
int i, j, k;
i = st;
j = mij + 1;
k = 0;
while(i <= mij && j <= dr)
if(v[i] <= v[j])
w[k++] = v[i++];
else
w[k++] = v[j++];
while(i <= mij)
w[k++] = v[i++];
while(j <= dr)
w[k++] = v[j++];
for(i = st; i <= dr; i++)
v[i] = w[i - st];
}
void mergesort(int v[], const int& st, const int& dr)
{
int mij;
if(st >= dr)
return;
mij = (st + dr) / 2;
mergesort(v, st, mij);
mergesort(v, mij + 1, dr);
interclasare(v, st, mij, dr);
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,a[500001];
f >> n;
for(int i=0;i<n;i++)
f >> a[i];
f.close();
mergesort(a,0,n-1);
for(int i=0;i<n;i++)
g<<a[i]<<' ';
g << '\n';
g.close();
return 0;
}