Pagini recente » Cod sursa (job #25969) | Cod sursa (job #187569) | Cod sursa (job #2003484) | Statistici Boiculese Claudiu (yusty95) | Cod sursa (job #1900256)
#include <cstdio>
#include <algorithm>
using namespace std;
int n, i, a[500010];
void mergesort (int low, int high, int mid)
{
int i, j, k, c[500010];
i=low; k=low; j=mid+1;
while (i<=mid && j<=high){
if (a[i]<=a[j]) c[k]=a[i], k++, i++;
else c[k]=a[j], k++, j++;
}
while (i<=mid){
c[k]=a[i]; k++; i++;
}
while (j<=high){
c[k]=a[j]; k++; j++;
}
for (i=low; i<k; i++)
a[i]=c[i];
}
void merge_sort(int low, int high)
{
int mid;
if (low<high){
mid=low+(high-low)/2;
merge_sort(low, mid);
merge_sort(mid+1, high);
mergesort(low, high, mid);
}
return;
}
int main ()
{
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for (i=1; i<=n; i++)
scanf("%d", &a[i]);
merge_sort(1, n);
for (i=1; i<=n; i++)
printf("%d ", a[i]);
return 0;
}