Pagini recente » Cod sursa (job #2815810) | Cod sursa (job #2157081) | Cod sursa (job #45532) | Cod sursa (job #529055) | Cod sursa (job #473510)
Cod sursa(job #473510)
// Sortare prin comparare(Merge sort).cpp : Defines the entry point for the console application.
//
//#include "stdafx.h"
#include "stdio.h"
FILE *f=fopen("algsort.in", "r");
FILE *g=fopen("algsort.out", "w");
int n, v[500001], w[500001];
void read()
{
fscanf(f, "%d", &n);
for (int i=1; i<=n; ++i)
fscanf(f, "%d", &v[i]);
}
void mergesort(int lo, int hi)
{
int mid=lo+(hi-lo)/2;
if (lo==hi) return;
mergesort(lo, mid);
mergesort(mid+1, hi);
for (int i=lo, j=mid+1, k=lo; i<=mid || j<=hi;)
{
if (j>hi || (i<=mid && v[i]<v[j]))
w[k++]=v[i++];
else
w[k++]=v[j++];
}
for (int m=lo; m<=hi; ++m)
v[m]=w[m];
}
int main()
{
read();
mergesort(1, n);
for (int i=1; i<=n; ++i)
fprintf(g, "%d ", v[i]);
return 0;
}