Pagini recente » Cod sursa (job #690855) | Cod sursa (job #2780842) | Cod sursa (job #1334243) | Cod sursa (job #984103) | Cod sursa (job #1742434)
#include <bits/stdc++.h>
#define NMAX 500001
#define swapp(a, b) { int tmp = a; a = b; b = tmp; }
using namespace std;
int N, values[NMAX];
int partitionn(int* values, int left, int right) {
int pivot = values[left + (right - left) / 2], i = left - 1, j = right + 1;
while(1) {
do ++i; while(values[i] < pivot);
do --j; while(values[j] > pivot);
if (i >= j) return j;
swapp(values[i], values[j]);
}
}
void quicksort(int* values, int left, int right) {
if (left < right) {
int pivotP = partitionn(values, left, right);
quicksort(values, left, pivotP);
quicksort(values, pivotP + 1, right);
}
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &N);
for (int it = 0; it < N; ++it) {
scanf("%d", &values[it]);
}
quicksort(values, 0, N - 1);
for (int it = 0; it < N; ++it) printf("%d ", values[it]);
return 0;
}