Pagini recente » Cod sursa (job #2094862) | Cod sursa (job #2653851) | Cod sursa (job #926526) | Cod sursa (job #2345257) | Cod sursa (job #2636590)
#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);
int* p = v;
for (int i = 1;i <= n;++i)
fscanf(fin, "%d", p++);
quickSort(1, n);
for (int i = 1;i <= n;++i)
fprintf(fout,"%d ", v[i]);
return 0;
}