Pagini recente » Cod sursa (job #98943) | Cod sursa (job #2736940) | Cod sursa (job #310531) | Cod sursa (job #528819) | Cod sursa (job #3254089)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
const int nmax = 500000;
long long v[nmax + 5];
int n;
int pivot(int st,int dr)
{
int ind = st;
int trv = 1;
while(st<=dr)
{
if(trv==1 && v[ind] > v[dr]){
swap(v[ind],v[dr]),ind++,trv=1-trv;continue;}
else if(trv==0 && (v[ind] > v[st] && st > ind) || (v[ind] < v[st] && st<ind)){
swap(v[ind],v[st]),ind++,trv=1-trv;continue;}
st+=1-trv;
dr-=trv;
}
return ind;
}
void quick_sort(int st,int dr)
{
if( st >= dr)
return;
int p = pivot(st,dr);
quick_sort(st,p);
quick_sort(p+1,dr);
}
int main()
{
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]<<' ';
}