Pagini recente » Cod sursa (job #2892164) | Cod sursa (job #1098617) | Cod sursa (job #2211081) | Cod sursa (job #1846995) | Cod sursa (job #661294)
Cod sursa(job #661294)
#include<cstdio>
#include<algorithm>
#define min(a, b, c) min2(a, min2(b, c))
#define min2(a, b) (a < b ? a : b)
using namespace std;
int n, v[1<<21];
void qsort(int v[], int st, int dr) {
int i = st, j = dr, pivot = v[i + rand() % (j - i)], b, c;
b = v[i + rand() % (j - i)];
c = v[i + rand() % (j - i)];
pivot = min(pivot, b, c);
while (i <= j) {
while (v[i] < pivot) ++i;
while (v[j] > pivot) --j;
if (i <= j) swap (v[i], v[j]), ++i, --j;
}
if (st < j) qsort (v, st, j);
if (dr > i) qsort (v, i, dr);
}
int main() {
int i;
freopen("algsort.in", "r", stdin), freopen("algsort.out", "w", stdout);
scanf("%d", &n);
for(i = 1; i <= n; i++) scanf("%d", &v[i]);
qsort(v, 1, n);
//sort(v, v + n);
for(i = 1; i <= n; i++) printf("%d ", v[i]);
return 0;
}