Pagini recente » Cod sursa (job #937337) | Cod sursa (job #1770632) | Cod sursa (job #936658) | Cod sursa (job #2444585) | Cod sursa (job #1351053)
#include <iostream>
#include <fstream>
#include <ctime>
#include <cstdlib>
#define nmax 500005
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
int A[nmax];
void read() {
fin >> n;
for (int i = 1; i <= n; i++)
fin >> A[i];
}
void qs(int st, int dr) {
if (st > dr)
return;
int i = st;
int j = dr;
int pivot = A[rand() % n + 1];
for (; i <= j;) {
for (; pivot > A[i];) i++;
for (; pivot < A[j];) j--;
if (i <= j) {
swap(A[i], A[j]);
i++, j--;
}
}
qs(st, j);
qs(i, dr);
}
void solve() {
qs(1, n);
for (int i = 1; i <= n; i++)
fout << A[i] << " ";
}
int main() {
srand(time(NULL));
read();
solve();
fin.close();
fout.close();
return 0;
}