Pagini recente » Diferente pentru concursuri intre reviziile 88 si 87 | Profil M@2Te4i | Diferente pentru preoni-2006/runda-1/solutii intre reviziile 22 si 23 | Istoria paginii utilizator/anacirligeanu | Cod sursa (job #455983)
Cod sursa(job #455983)
#include <cstdio>
void swap(unsigned a[], int x, int y){
static unsigned aux;
aux = a[x];
a[x] = a[y];
a[y] = aux;
}
void qsort(unsigned a[], int left, int right){
int i, last;
if(left >= right)
return;
swap(a, left, (left+right)/2);
last = left;
for(i = left+1; i <= right; i++)
if(a[i] < a[left])
swap(a, ++last, i);
swap(a, left, last);
qsort(a, left, last-1);
qsort(a, last+1, right);
}
int main(){
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int i, n;
unsigned a[500000];
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%u", a+i);
qsort(a, 0, n-1);
for(i = 0; i < n; i++)
printf("%u ", a[i]);
printf("\n");
}