Pagini recente » Cod sursa (job #2139204) | Cod sursa (job #3123473) | Cod sursa (job #1563093) | Cod sursa (job #2650342) | Cod sursa (job #371542)
Cod sursa(job #371542)
#include<fstream>
using namespace std;
long a[500000];
void qs(long l, long r)
{
long i=l-1,j=r,p=l-1,q=r,v=a[r],aux,k;
if(r>l)
{
for(;;)
{
while(a[++i]<v);
while(v<a[--j])if(j==l)break;
if(i>=j)break;
aux=a[i];
a[i]=a[j];
a[j]=aux;
if(a[i]==v)
{
p++;
aux=a[p];
a[p]=a[i];
a[i]=aux;
}
if(a[j]==v)
{
q--;
aux=a[q];
a[q]=a[j];
a[j]=aux;
}
}
aux=a[i];
a[i]=a[r];
a[r]=aux;
j=i-1;
i=i+1;
for(k=l;k<p;k++,j--)
{
aux=a[k];
a[k]=a[j];
a[j]=aux;
}
for(k=r-1;k>q;k--,i++)
{
aux=a[i];
a[i]=a[k];
a[k]=aux;
}
qs(l,j);
qs(i,r);
}
}
int main()
{
long n,i;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=1;i<=n;i++)f>>a[i];
qs(1,n);
for(i=1;i<=n;i++)g<<a[i]<<' ';
return 0;
}