Pagini recente » Cod sursa (job #1522157) | Cod sursa (job #2457456) | Cod sursa (job #3295990) | Cod sursa (job #1473219) | Cod sursa (job #1208219)
#include<cstdio>
#include<fstream>
#include<iostream>
#include<iomanip>
#include<algorithm>
#include<vector>
#include<bitset>
#include<deque>
#include<queue>
#include<set>
#include<map>
#include<cmath>
#include<cstring>
#include<ctime>
#include<cstdlib>
using namespace std;
const int nmax = 500005;
int n,i,a[nmax];
int partition(int l,int r)
{
int x=a[rand()%(r-l+1)+l];
int i=l-1;
int j=r+1;
for(;;)
{
do j--; while(a[j]>x);
do i++; while(a[i]<x);
if(i<j) swap(a[i],a[j]);
else return j;
}
}
void quicksort(int l,int r)
{
if(l>=r) return;
int x=partition(l,r);
quicksort(l,x);
quicksort(x+1,r);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
srand(time(0));
scanf("%d",&n);
for(i=1;i<=n;i++) scanf("%d",&a[i]);
quicksort(1,n);
for(i=1;i<=n;i++) printf("%d ",a[i]);
return 0;
}