Pagini recente » Cod sursa (job #897076) | Monitorul de evaluare | Cod sursa (job #1248635) | Cod sursa (job #1703912) | Cod sursa (job #1708640)
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#define DIM 500001
using namespace std;
int n,v[DIM];
int divide(int st, int dr) {
swap(v[rand()%(n+1)],v[dr]);
int wall=st-1;
for(int i=st;i<dr;i++) {
if(v[i]<v[dr]) {
wall++;
swap(v[wall],v[i]);
}
}
swap(v[wall+1],v[dr]);
return wall+1;
}
void quick_sort(int st, int dr) {
if(st<dr) {
int pivot=divide(st,dr);
quick_sort(st,pivot-1);
quick_sort(pivot+1,dr);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&v[i]);
quick_sort(1,n);
for(int i=1;i<=n;i++)
printf("%d ",v[i]);
return 0;
}