Pagini recente » Cod sursa (job #868954) | Cod sursa (job #2796151) | Cod sursa (job #1041241) | Cod sursa (job #2064709) | Cod sursa (job #1238731)
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int b[500002];
void mergesort(int l, int r, int a[])
{
if(l<r)
{
int k,i,j;
int m=(l+r)/2;
mergesort(l,m,a);
mergesort(m+1,r,a);
for(i=l, k=l, j=m+1; i<=m || j<=r; )
if((j>r)||(i<=m && a[i]<a[j]))
b[k++]=a[i++];
else
b[k++]=a[j++];
for(k=l;k<=r;k++)a[k]=b[k];
}
}
int partition1337(int l, int r, int a[])
{
int p=a[r];
int i=l-1,j;
for(j=l;j<r;j++)
{
if(a[j]<p)
swap(a[++i],a[j]);
}
swap(a[i+1],a[r]);
return i+1;
}
void quicksort(int l, int r, int a[])
{
if(l<r)
{
int q=partition1337(l,r,a);
quicksort(l,q-1,a);
quicksort(q+1,r,a);
}
}
int main()
{
int n, a[500001],i;
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
cin>>n;
for(i=0;i<n;i++)cin>>a[i];
quicksort(0,n-1,a);
for(i=0;i<n;i++) cout<<a[i]<<" ";
}