Pagini recente » Cod sursa (job #2591838) | Cod sursa (job #672940) | Cod sursa (job #1526285) | Cod sursa (job #1548372) | Cod sursa (job #1240031)
#include <stdio.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
#define MAXN 500005
int vec[ MAXN ],
N;
void quicksort(int li, int ls) {
int i,
j,
aux,
piv;
i = li;
j = ls;
piv = vec[(i + j) >> 1];
while( i <= j ) {
while( vec[ i ] < piv) {
i++;
}
while( vec[ j ] > piv) {
j--;
}
if(i<=j) {
aux = vec[i]^vec[j];
vec[i] = aux^vec[i];
vec[j] = aux^vec[j];
i++;
j--;
}
}
if((i-1) > li) quicksort(li, i - 1);
if(i < ls) quicksort(i, ls);
}
void write() {
int i;
freopen(FOUT, "w", stdout);
for(i = 0; i < N; i++) {
printf("%d ", vec[ i ]);
}
fclose( stdout );
}
void read() {
int i;
freopen(FIN, "r", stdin);
scanf("%d",&N);
for(i = 0; i < N; i++) {
scanf("%d", &vec[ i ]);
}
fclose( stdin );
}
int main() {
read();
quicksort( 0, N - 1 );
write();
return(0);
}