Pagini recente » Cod sursa (job #392678) | Cod sursa (job #1143661) | Cod sursa (job #372896) | Cod sursa (job #449734) | Cod sursa (job #1394933)
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
int a[500000];
int part(int l, int r) {
int pivot = a[rand() % (r - l + 1) + l];
int i = l - 1, j = r + 1;
while (true) {
do j--;
while (a[j] > pivot);
do i++;
while (a[i] < pivot);
if (i < j)
swap(a[i], a[j]);
else return j;
}
}
void QS(int l, int r) {
if (l < r) {
int m = part(l, r);
QS(l, m);
QS(m + 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;
}