Pagini recente » Cod sursa (job #2899340) | Cod sursa (job #537515) | Cod sursa (job #1682295) | Cod sursa (job #558713) | Cod sursa (job #1714307)
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
int pr,ul , n,p;
int v[500001];
int a[500001];
void interclasare(int pr, int m, int ul)
{
int x = pr;
int k = 0;
int y = m + 1;
while((x<=m)&&(y<=ul))
if (v[x] < v[y])
{
a[++k] = v[x];
x++;
}
else
{
a[++k] = v[y];
y++;
}
if (y > ul)
for (p = x; p <= m; p++)
{
a[++k] = v[p];
}
if (x > m)
for (p = y; p <= ul; p++)
{
a[++k] = v[p];
}
for (p = 1; p <= k; p++)
v[pr+p-1] = a[p];
}
void divide(int pr, int ul)
{
if (pr < ul) {
int m = (pr + ul) / 2;
divide(pr, m);
divide(m + 1, ul);
interclasare(pr, m, ul);
}
}
int main() {
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> n;
for (pr = 1; pr <= n; pr++)
f >> v[pr];
divide(1, n);
for (pr = 1; pr <= n; pr++)
g << v[pr]<<' ';
return 0;
}