Pagini recente » Cod sursa (job #1229639) | Cod sursa (job #153995) | Cod sursa (job #3264640) | Cod sursa (job #227509) | Cod sursa (job #3286931)
#include <fstream>
#include <algorithm>
#include <ctime>
#include <cstdlib>
#define ll long long
using namespace std;
const int NMAX = 5e5;
int v[NMAX + 1];
void quick(int st, int dr)
{
if (st >= dr)
return ;
int i, j = st - 1, putin, mult;
int pivot = st + rand() % (dr - st);
int val = v[pivot];
for (i = st; i <= dr; i++)
if (v[i] <= val)
{
swap(v[++j], v[i]);
}
swap(v[pivot], v[j]);
pivot = j;
for (j = pivot; v[pivot] == v[j] and j >= st; j--);
putin = j;
for (j = pivot + 1; v[pivot] == v[j] and j <= dr; j++);
mult = j;
quick(st, putin);
quick(mult, dr);
}
int main()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
srand(time(0));
int n, i;
cin >> n;
for (i = 1; i <= n; i++)
cin >> v[i];
quick(1, n);
for (i = 1; i <= n; i++)
cout << v[i] << " ";
}