Pagini recente » Cod sursa (job #3142483) | Cod sursa (job #1191599) | Cod sursa (job #690292) | Cod sursa (job #2162151) | Cod sursa (job #472363)
Cod sursa(job #472363)
#include <stdio.h>
#include <fstream>
unsigned int a[500005],b[500005], n;
using namespace std;
void merge_sort(int l, int r)
{
if(l==r) return;
int m = (l+r)/2;
merge_sort(l,m);
merge_sort(m+1,r);
int l1=l; int l2=m+1; int lb=1;
while(l1<=m&&l2<=r)
if(a[l1]<a[l2])
b[lb++] = a[l1++];
else
b[lb++] = a[l2++];
while(l1<=m)
b[lb++]=a[l1++];
while(l2<=r)
b[lb++]=a[l2++];
for(int i=1;i<lb;i++)
a[l+i-1] = b[i];
}
int main()
{
int i;
ifstream in("algsort.in");
ofstream out("algsort.out");
in>>n;
for(i=1;i<=n;i++) in>>a[i];
merge_sort(1,n);
for(i=1;i<=n;i++) out<<a[i]<<" ";
out.close();
return 0;
}