Pagini recente » Cod sursa (job #2822469) | Cod sursa (job #2786210) | Cod sursa (job #2050040) | Cod sursa (job #1357795) | Cod sursa (job #1229409)
#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;
pos = partition(li, ls);
if(li < pos - 1) qs(li, pos - 1);
if(ls > pos + 1) qs(pos + 1, ls);
};
int partition(int li, int ls) {
int i, s, p, temp;
p = vec[ ls ],
s = li - 1;
for(i = li; i <= ls; i++) {
if(vec[i]<=p) {
++s;
temp = vec[s];
vec[s] = vec[i];
vec[i] = temp;
}
}
return s;
}
void write() {
int i;
freopen(FOUT, "w", stdout);
for(i = 0; i < n; i++) {
printf("%d ", vec[ i ]);
}
fclose(stdout);
};