Pagini recente » Cod sursa (job #2499281) | Cod sursa (job #1609649) | Cod sursa (job #735049) | Cod sursa (job #622146) | Cod sursa (job #1394845)
#include <ctime>
#include <cstdlib>
#include <fstream>
#include <algorithm>
using namespace std;
int A[500000];
int part(int l, int r) {
int poz = rand() % (r - l + 1) + l;
int pivot = A[poz];
swap(A[poz], A[r]);
int i = l - 1;
for (int j = l; j < r; j++)
if (A[j] < pivot) {
i++;
swap(A[i], A[j]);
}
swap(A[i + 1], A[r]);
return i + 1;
}
void QS(int l, int r) {
if (l < r) {
int q = part(l, r);
QS(l, q - 1);
QS(q + 1, r);
}
}
int main() {
srand(time(0));
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, i;
fin >> n;
for (i = 0; i < n; i++)
fin >> A[i];
QS(0, n - 1);
for (i = 0; i < n; i++)
fout << A[i] << ' ';
return 0;
}