Pagini recente » Cod sursa (job #128647) | Cod sursa (job #3132094) | Cod sursa (job #1096033) | Cod sursa (job #1560884) | Cod sursa (job #1345185)
#include<cstdio>
#include<time.h>
#include<stdlib.h>
using namespace std;
int n, i;
int v[500001];
//ifstream fin("algsort.in");
//ofstream fout("algsort.out");
FILE *fin = fopen("algsort.in" , "r");
FILE *fout= fopen("algsort.out", "w");
int poz(int st, int dr){
int x = rand() % (dr - st) + st;
int aux;
aux = v[st];
v[st] = v[x];
v[x] = aux;
int ii = 0, jj = -1, i = st, j = dr;
while(i < j){
if(v[i] > v[j]){
aux = v[i];
v[i] = v[j];
v[j] = aux;
aux = ii;
ii = -jj;
jj = -aux;
}
i += ii;
j += jj;
}
return i;
}
void sorteaza(int st, int dr){
if(st < dr){
int p = poz(st, dr);
sorteaza(st, p - 1);
sorteaza(p + 1, dr);
}
}
int main(){
srand(time(0));
fscanf(fin, "%d", &n);
for(i = 1; i <= n; i++){
fscanf(fin, "%d", &v[i]);
}
sorteaza(1, n);
for(i = 1; i <= n; i++){
fprintf(fout, "%d ", v[i]);
}
return 0;
}