Pagini recente » Cod sursa (job #1130415) | Cod sursa (job #1592125) | Cod sursa (job #192332) | Cod sursa (job #1131742) | Cod sursa (job #2200882)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
const int nmax = 5e5 + 5;
int n, v[nmax];
int pivot(int l, int r) {
int x = v[ rand() % (r-l) + l ];
--l, ++r;
while(true) {
do {
--r;
} while(v[r] > x);
do {
++l;
} while(v[l] < x);
if(l < r) {
swap(v[l], v[r]);
} else
return r;
}
}
void quick(int l, int r) {
if(l >= r)
return;
int piv = pivot(l, r);
quick(l, piv);
quick(piv + 1, r);
}
int main() {
f >> n;
for(int i = 1; i <= n; ++i) {
f >> v[i];
}
srand(time(0));
quick(1, n);
for(int i = 1; i <= n; ++i) {
g << v[i] << ' ';
}
f.close();
g.close();
return 0;
}