Pagini recente » Cod sursa (job #1712223) | Cod sursa (job #2477743) | Cod sursa (job #513880) | Cod sursa (job #361947) | Cod sursa (job #1282545)
#include <stdio.h>
#define FIN "algsort.in"
#define FOUT "algsort.out"
#define MAXN 500005
typedef unsigned int uint;
uint arr[ MAXN ],
n;
void read() {
uint i;
freopen(FIN, "r", stdin);
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d", &arr[ i ]);
fclose( stdin );
};
void swap(uint *i, uint *j) {
uint temp;
temp = *i;
*i = *j;
*j = temp;
};
uint pivot(int left, int right) {
int i = 0,
j = -1,
aux;
while(left < right) {
if(arr[left] > arr[right]) {
swap(arr + left, &arr[right]);
aux = i;
i = -j;
j = -aux;
}
left += i;
right += j;
}
return left;
};
void _qsort(int left, int right) {
uint p;
if(left < right) {
p = pivot(left, right);
_qsort(left, p - 1);
_qsort(p + 1, right);
}
}
void qsort() {
_qsort(0, n - 1);
};
void write() {
uint i;
freopen(FOUT, "w", stdout);
for(i = 0; i < n; i++) printf("%d ", arr[ i ]);
fclose( stdout );
}
int main() {
read();
qsort();
write();
return(0);
};