Pagini recente » Diferente pentru utilizator/dajalecsandru intre reviziile 3 si 6 | Diferente pentru utilizator/gabyboss29 intre reviziile 20 si 1 | Diferente pentru utilizator/test.php intre reviziile 19 si 123 | Diferente pentru runda/gsp intre reviziile 4 si 5 | Cod sursa (job #1708643)
#include <stdlib.h>
#include <fstream>
#define DIM 500005
using namespace std;
int n,v[DIM];
int divide(int st, int dr) {
swap(v[rand()%(dr-st)+st],v[dr]);
int wall=st-1;
for(int i=st;i<dr;i++) {
if(v[i]<v[dr]) {
wall++;
swap(v[wall],v[i]);
}
}
swap(v[wall+1],v[dr]);
return wall+1;
}
void quick_sort(int st, int dr) {
if(st<dr) {
int pivot=divide(st,dr);
quick_sort(st,pivot-1);
quick_sort(pivot+1,dr);
}
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
quick_sort(1,n);
for(int i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}