Pagini recente » Cod sursa (job #1445642) | Cod sursa (job #2038023) | Cod sursa (job #2508157) | Cod sursa (job #2457873) | Cod sursa (job #2636598)
#include <fstream>
#include <stdlib.h>
#include <ctime>
#define NMAX 500005
std::ifstream fin("algsort.in");
std::ofstream fout("algsort.out");
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() {
srand(time(NULL));
std::ios::sync_with_stdio(false);
fin >> n;
for (int i = 1;i <= n;++i)
fin >> v[i];
quickSort(1, n);
for (int i = 1;i <= n;++i)
fout << v[i] << ' ';
return 0;
}