Pagini recente » Borderou de evaluare (job #2640982) | Borderou de evaluare (job #2085103) | Borderou de evaluare (job #867827) | Borderou de evaluare (job #1788009) | Cod sursa (job #568312)
Cod sursa(job #568312)
//sortare prin interclasare (divide et impera)
#include <fstream>
using namespace std;
#define DN 500005
ifstream fi("algsort.in");
ofstream fo("algsort.out");
int N, A[DN], B[DN];
void die(int st, int dr)
{
if (st >= dr)
return;
int m = (st + dr) >> 1;
die (st, m);
die (m + 1, dr);
int i = st, j = m + 1, k = -1;
while (i <= m && j <= dr)
if (A[i] < A[j])
B[++k] = A[i++];
else
B[++k] = A[j++];
while (i <= m)
B[++k] = A[i++];
while (j <= dr)
B[++k] = A[j++];
for (i = st; i <= dr; i++)
A[i] = B[i - st];
}
int main()
{
fi >> N;
for (int i = 0; i < N; i++)
fi >> A[i];
die(0, N - 1);
for (int i = 0; i < N; i++)
fo << A[i] << ' ';
return 0;
}