Pagini recente » Cod sursa (job #2034585) | Cod sursa (job #305532) | Cod sursa (job #3123938) | Cod sursa (job #1176218) | Cod sursa (job #1221097)
#include <fstream>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500010];
int n, i;
int poz(int st, int dr) {
int x = st + rand()%(dr-st);
int aux = v[st];
v[st] = v[x];
v[x] = aux;
int ii = 0, jj = -1;
while (st < dr) {
if (v[st] > v[dr]) {
aux = v[st];
v[st] = v[dr];
v[dr] = aux;
aux = ii;
ii = -jj;
jj = -aux;
}
st += ii;
dr += jj;
}
return st;
}
void sortare(int st, int dr) {
if (st>=dr)
return;
int p = poz(st, dr);
sortare(st, p-1);
sortare(p+1, dr);
}
int main() {
fin>>n;
srand(time(0));
for (i=1;i<=n;i++)
fin>>v[i];
sortare(1, n);
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}