Pagini recente » Cod sursa (job #2241964) | Cod sursa (job #2680282) | Cod sursa (job #2723336) | Cod sursa (job #185365) | Cod sursa (job #2076059)
#include <iostream>
#include <stdio.h>
#define nmax 500000+5
using namespace std;
int a[nmax];
int v[nmax];
void merge_sort(int * v, int left, int right)
{
if (left==right) return;
int mid=(left+right)/2;
merge_sort(v,left,mid);
merge_sort(v,mid+1,right);
int i=left,j=mid+1,k=left;
while (i<=mid && j<=right)
{
if (v[i]<=v[j]) {
a[k++]=v[i++];
}
else if (v[i]>v[j]) {
a[k++]=v[j++];
}
}
while (i<=mid) a[k++]=v[i++];
while (j<=right) a[k++]=v[j++];
for (i=left;i<=right;i++)
v[i]=a[i];
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int x, n=0, i;
cin >> n;
for(i=0;i<n;i++) cin>>v[i];
merge_sort(v, 0, n-1);
for (i=0;i<n;i++) cout<<v[i]<<' ';
cout << '\n';
return 0;
}