Pagini recente » Cod sursa (job #2738207) | Cod sursa (job #841394) | Cod sursa (job #399774) | Cod sursa (job #1126048) | Cod sursa (job #2285080)
#include <stdio.h>
const int NMAX = 500005;
int N;
int vec[NMAX];
int partition(int l, int r) {
int aux;
int m = l + (r - l) / 2;
aux = vec[r];
vec[r] = vec[m];
vec[m] = aux;
int i = l - 1;
int pivot = vec[r];
for (int j = l; j < r; ++j) {
if (vec[j] <= pivot) {
++i;
aux = vec[i];
vec[i] = vec[j];
vec[j] = aux;
}
}
aux = vec[r];
vec[r] = vec[i+1];
vec[i+1] = aux;
return i+1;
}
void quicksort(int l, int r) {
if (l >= r) {
return;
}
int p = partition(l, r);
quicksort(l, p -1);
quicksort(p + 1, r);
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &N);
for (int i = 0; i < N; ++i) {
scanf("%d", &vec[i]);
}
quicksort(0,N-1);
for (int i = 0; i < N; ++i) {
printf("%d ", vec[i]);
}
fclose(stdin);
fclose(stdout);
return 0;
}