Pagini recente » Cod sursa (job #1069562) | Cod sursa (job #738243) | Cod sursa (job #1975738) | Cod sursa (job #859527) | Cod sursa (job #483316)
Cod sursa(job #483316)
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define Nmax 500001
#define swap(a,b) a^=b^=a^=b
int part(int st, int dr, int A[]) {
int i, j, val, pivot;
i=st-1; j=dr+1;
pivot=st+rand()%(dr-st+1);
val=A[st];
while(1) {
do i++; while(A[i]<val);
do j--; while(A[j]>val);
if(i<j)
swap(A[i],A[j]);
else
return j;
}
}
void qsort(int st, int dr, int A[]) {
int mij;
if(st<dr) {
mij=part(st,dr,A);
qsort(st,mij,A);
qsort(mij+1,dr,A);
}
}
int main() {
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int A[Nmax], n, i;
srand(time(0));
scanf("%d",&n);
for(i=1; i<=n; i++)
scanf("%d",&A[i]);
qsort(1,n,A);
for(i=1; i<=n; i++)
printf("%d ",A[i]);
printf("\n");
return 0;
}