Pagini recente » Cod sursa (job #55438) | Cod sursa (job #1631212) | Cod sursa (job #1267755) | Cod sursa (job #1091429) | Cod sursa (job #1490541)
#include <stdio.h>
void quickswap(int &a, int &b) {
a = a xor b;
b = a xor b;
a = a xor b;
}
void quicksort(int *begin, int *end) {
int n = end - begin;
if (n > 1) {
//int pivot = begin[ n >> 1 ];
quickswap(*begin, begin[n >> 1]);
int *i = begin, *j = end - 1, d = 0;
while(i < j) {
if(*i > *j) {
quickswap(*i, *j);
d = 1 - d;
}
i += d;
j -= 1 - d;
}
quicksort(begin, i);
quicksort(i + 1, end);
}
}
const int MAX_N = 500000;
int v[MAX_N];
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
int N;
scanf("%d", &N);
for(register int i = 0; i < N; ++ i)
scanf("%d", &v[i]);
quicksort(v, v + N);
for(register int i = 0; i < N; ++ i)
printf("%d ", v[i]);
printf("\n");
return 0;
}