Pagini recente » Cod sursa (job #182726) | Cod sursa (job #725233) | Cod sursa (job #3175485) | Cod sursa (job #89299) | Cod sursa (job #2636609)
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
#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;
}