Pagini recente » Cod sursa (job #2842130) | Cod sursa (job #1365052) | Cod sursa (job #2033613) | Cod sursa (job #1229345)
#include <stdio.h>
#define MAX 500010
#define FIN "algsort.in"
#define FOUT "algsort.out"
int vec[MAX],n;
void read();
void sort();
void qs(int,int);
int partition(int,int);
void write();
int main() {
read();
sort();
write();
return 0;
}
void read() {
int i;
freopen(FIN, "r", stdin);
scanf("%d", &n);
for(i = 0; i < n; i++) {
scanf("%d", &vec[ i ]);
}
fclose( stdin );
};
void sort() {
qs(0, n-1);
};
void qs(int li, int ls) {
int pos;
if(li < ls) {
pos = partition(li,ls);
qs(li, pos - 1);
qs(pos + 1, ls);
}
};
int partition(int li, int ls) {
int i = li,
j = ls,
i1 = 0,
j1 = -1,
aux;
while(i < j) {
if(vec[i] > vec[j]) {
aux = vec[i];
vec[i] = vec[j];
vec[j] = aux;
aux = i1;
i1 = -j1;
j1 = -aux;
}
i = i + i1;
j = j + j1;
}
return i;
}
void write() {
int i;
freopen(FOUT, "w", stdout);
for(i = 0; i < n; i++) {
printf("%d ", vec[ i ]);
}
fclose(stdout);
};