Pagini recente » Cod sursa (job #2659405) | Cod sursa (job #1115777) | Cod sursa (job #1464602) | Cod sursa (job #2369258) | Cod sursa (job #2439526)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void sortare(int *v, int s, int m, int d)
{
int temp[d-s+1], i = s, j = m + 1, k = 0;
while (i <= m && j <= d)
{
if (v[i] <= v[j])
{
temp[k] = v[i];
k++;
i++;
}
else
{
temp[k] = v[j];
k++;
j++;
}
}
while (i <= m)
{
temp[k] = v[i];
k++;
i++;
}
while (j <= d)
{
temp[k] = v[j];
k++;
j++;
}
for (i = s; i <= d; i++)
v[i] = temp[i-s];
}
void divetimp(int *v, int s, int d)
{
if (s < d)
{
int m = (s+d)/2;
divetimp(v, s, m);
divetimp(v, m+1, d);
sortare(v, s, m, d);
}
}
int main()
{
int n, v[500001], i;
fin>>n;
for (i = 1; i <= n; i++)
fin>>v[i];
divetimp(v, 1, n);
for (i = 1; i <= n; i++)
fout<<v[i]<<" ";
}