Pagini recente » Cod sursa (job #568021) | Cod sursa (job #1215238) | Cod sursa (job #1317168) | Cod sursa (job #2362058) | Cod sursa (job #1221098)
#include <cstdio>
#include <stdlib.h>
#include <time.h>
using namespace std;
FILE *fin = fopen("algsort.in","r");
FILE *fout = fopen("algsort.out","w");
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() {
fscanf(fin,"%d",&n);
srand(time(0));
for (i=1;i<=n;i++)
fscanf(fin,"%d",&v[i]);
sortare(1, n);
for (i=1;i<=n;i++)
fprintf(fout,"%d ",v[i]);
return 0;
}