Pagini recente » Cod sursa (job #1735938) | Cod sursa (job #40429) | Cod sursa (job #1683322) | Cod sursa (job #84411) | Cod sursa (job #2636611)
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#define NMAX 500005
FILE* fin, * fout;
int v[NMAX], n;
void swap(int* a, int* b) {
int aux = *a;
*a = *b;
*b = aux;
}
int partition(int i, int j) {
swap(&v[rand() % (j - i) + i], &v[j]);
int k = i, l = i, p = v[j];
for (;l < j;++l) {
if (v[l] < p)
swap(&v[k++], &v[l]);
}
swap(&v[k], &v[j]);
return k;
}
void quickSort(int i, int j) {
if (i >= j)
return;
int p = partition(i, j);
quickSort(i, p - 1);
quickSort(p + 1, j);
}
int main() {
fin = fopen("algsort.in", "r");
fout = fopen("algsort.out", "w");
srand(time(NULL));
fscanf(fin, "%d", &n);
for (int i = 1;i <= n;++i)
fscanf(fin, "%d", &v[i]);
quickSort(1, n);
for (int i = 1;i <= n;++i)
fprintf(fout, "%d ", v[i]);
return 0;
}