Pagini recente » Cod sursa (job #2186378) | Cod sursa (job #2523896) | Cod sursa (job #1765340) | Cod sursa (job #1972216) | Cod sursa (job #1786079)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001], n;
void inter(int st,int m,int dr)
{
int h, i, j, w[500001], k;
h = st;
i = st;
j = m+1;
while((h <= m) && (j <= dr))
{
if(v[h] <= v[j])
{
w[i] = v[h++];
}
else
{
w[i] = v[j++];
}
i++;
}
while(h <= m)
{
w[i++] = v[h++];
}
while(j <= dr)
{
w[i++] = v[j++];
}
for(k = st; k <= dr; ++k)
v[k] = w[k];
}
void mergesort(int v[], int st, int dr){
if (st < dr){
int mij = (st + dr) / 2;
mergesort(v, st, mij);
mergesort(v, mij + 1, dr);
inter(st, mij, dr);
}
}
int main()
{
int i;
fin >> n;
for (i = 1; i <= n; i++)
fin >> v[i];
mergesort(v, 1, n);
for (i = 1; i <= n; i++)
fout << v[i] << " ";
return 0;
}