Pagini recente » Cod sursa (job #1226637) | Cod sursa (job #1183502) | Cod sursa (job #819043) | Cod sursa (job #743008) | Cod sursa (job #3254096)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int nmax = 500000;
long long v[nmax + 5];
int n;
int val;
int pivot(int st,int dr)
{
int trv = 1;
while(st<dr)
{
if(v[st] > v[dr])
swap(v[st],v[dr]),trv = 1-trv;
st+=1-trv;
dr-=trv;
}
return st;
}
void quick_sort(int st,int dr)
{
if( st >= dr)
return;
++val;
int p = pivot(st,dr);
quick_sort(st,p-1);
quick_sort(p+1,dr);
}
void full_sort(long long * v,int l)
{
unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
shuffle(v+1,v+l+1,default_random_engine(seed));
//for(int i = 1; i < l/2; i ++){
// swap(v[i],v[l-i/2]);
//}
quick_sort(1,l);
}
int main()
{
fin>>n;
for(int i=1;i<=n;i++) fin>>v[i];
full_sort(v,n);
//fout<<val<<'\n';
for(int i=1;i<=n;i++) fout<<v[i]<<' ';
}