Pagini recente » Cod sursa (job #1632761) | Cod sursa (job #875673) | Cod sursa (job #2875986) | Cod sursa (job #1115326) | Cod sursa (job #2278022)
#include <cstdio>
#include <fstream>
#include <cstdlib>
#define nmax 500005
using namespace std;
int selectpivot(int v[],int st,int dr)
{
int i= st, j= dr;
int p= st+ rand()% (dr- st +1);
swap(v[i], v[p]);
while (1) {
if (v[i]>v[j]) {
swap(v[j], v[i+1]);
swap(v[i], v[i+1]);
i++;
}
else j--;
if (i>=j)
return i;
}
}
void qsort(int v[], int st, int dr)
{
int p=selectpivot(v, st, dr);
if (st<p)
qsort(v, st, p);
if (p+1<dr)
qsort(v, p+1, dr);
}
int main()
{
int n, i, j, v[nmax]={0};
freopen("algsort.in", "r" , stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for (i= 1; i<= n; i++)
scanf("%d",&v[i]);
qsort(v, 1, n);
for (i= 1; i<= n; i++)
printf("%d ", v[i]);
return 0;
}