Pagini recente » 987654321 | Cod sursa (job #1096344) | Cod sursa (job #2205342) | Cod sursa (job #1753439) | Cod sursa (job #2636595)
#include <stdio.h>
#include <stdlib.h>
#include <ctime>
#define NMAX 500005
FILE* fin, * fout;
void swap(int& a, int& b) {
int aux = a;
a = b;
b = aux;
}
int partition(int *v,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 *v,int i, int j) {
if (i >= j)
return;
int p = partition(v,i, j);
quickSort(v,i, p - 1);
quickSort(v, p + 1, j);
}
int main() {
fin = fopen("algsort.in", "r");
fout = fopen("algsort.out", "w");
srand(time(NULL));
int v[NMAX], n;
fscanf(fin, "%d", &n);
for (int i = 1;i <= n;++i)
fscanf(fin, "%d", &v[i]);
quickSort(v,1, n);
for (int i = 1;i <= n;++i)
fprintf(fout,"%d ", v[i]);
return 0;
}