Pagini recente » Cod sursa (job #1830167) | Rating Ciurea Daniel (Neamtzu21) | Cod sursa (job #3163432) | Cod sursa (job #865537) | Cod sursa (job #2943032)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stdlib.h>
#include <time.h>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500005];
void qsort(int st, int dr){
int rnr = v[rand() % (dr - st + 1) + st], cst = st, cdr = dr, aux;
while(v[cst] < rnr){
cst++;
}
while(v[cdr] > rnr){
cdr--;
}
while(cst < cdr){
aux = v[cst];
v[cst] = v[cdr];
v[cdr] = aux;
cst++;
cdr--;
while(v[cst] < rnr){
cst++;
}
while(v[cdr] > rnr){
cdr--;
}
}
if(st < cdr){
qsort(st, cdr);
}
if(dr > cdr + 1){
qsort(cdr + 1, dr);
}
}
int main()
{
srand(time(0));
int n, i;
in >> n;
for(i = 1; i <= n; i++){
in >> v[i];
}
qsort(1, n);
for(i = 1; i <= n; i++){
out << v[i] << " ";
}
return 0;
}