Pagini recente » Cod sursa (job #2043939) | Cod sursa (job #1340765) | Cod sursa (job #1912544) | Cod sursa (job #1791663) | Cod sursa (job #2639845)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("agsort.in");
ofstream g ("agsort.out");
int a[500002], b[500002];
void interclasare(int a[], int st1, int dr1, int st2, int dr2)
{
int i = st1;
int j = st2;
int k = 0;
while (i <= dr1 && j <= dr2)
{
if (a[i] < a[j])
{
b[++k] = a[i];
i++;
}
else
{
b[++k] = a[j];
j++;
}
}
while (i <= dr1)
{
b[++k] = a[i];
i++;
}
while (j <= dr2)
{
b[++k] = a[j];
j++;
}
for (int t=1; t<=k; ++t)
a[st1+t-1] = b[t];
}
void mergesort(int a[],int st, int dr)
{
if (st == dr) return;
int mij = (st + dr) / 2;
mergesort(a, st, mij);
mergesort(a, mij+1, dr);
interclasare(a, st, mij, mij+1, dr);
}
int main()
{
int n, i, j;
f>>n;
for (i=1;i<=n;i++)
{
f>>a[i];
}
mergesort(a, 1, n);
for(j=1;j<=n;j++)
{
g<<a[j]<<" ";
}
}