Pagini recente » Cod sursa (job #2489959) | Cod sursa (job #618424) | Cod sursa (job #3267741) | Cod sursa (job #2817446) | Cod sursa (job #1726399)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
#define nmax 500010
#define cout fout
int n;
int v[nmax];
int get_pivot(int a,int b)
{
int ii,jj;
ii=1;
jj=0;
while(a<b)
{
if(v[a]>v[b])
{
swap(v[a],v[b]);
ii=1-ii;
jj=1-jj;
}
a+=ii;
b-=jj;
}
return a;
}
void qsort(int a,int b)
{
if(b<=a) return;
bool ok = false;
for(int i=a;i<b;++i) if(v[i]>v[i+1]) ok = true;
if(!ok) return;
int p=get_pivot(a,b);
qsort(a,p-1);
qsort(p+1,b);
}
int main()
{
int i;
fin>>n;
for(i=1;i<=n;++i)
fin>>v[i];
qsort(1,n);
for(i=1;i<=n;++i) cout<<v[i]<<' ';
return 0;
}