Pagini recente » Cod sursa (job #2579658) | Cod sursa (job #812481) | Cod sursa (job #2021139) | Cod sursa (job #2020880) | Cod sursa (job #1714010)
#include <fstream>
#define NM 500010
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[NM], n;
void inter(int st, int dr, int mid);
void mergesort(int st, int dr)
{
int mid;
if(st < dr)
{
mid = (st + dr) >> 1;
mergesort(st, mid);
mergesort(mid + 1, dr);
inter(st, dr, mid);
}
return;
}
void inter(int st, int dr, int mid)
{
int i, j, k, b[NM];
i = st;
k = st;
j = mid + 1;
while(i <= mid && j <= dr)
{
if(v[i] < v[j])
{
b[k] = v[i];
k++;
i++;
}
else
{
b[k] = v[j];
k++;
j++;
}
}
while(i <= mid)
{
b[k] = v[i];
i++;
k++;
}
while(j <= dr)
{
b[k] = v[j];
j++;
k++;
}
for(int i = st; i < k; ++i)
v[i] = b[i];
}
int main()
{
f >> n;
for(int i = 1; i <= n; ++i)
f >> v[i];
mergesort(1, n);
for(int i = 1; i <= n; ++i)
g << v[i] << ' ';
return 0;
}