Cod sursa(job #370677)
| Utilizator | Data | 1 decembrie 2009 20:07:20 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include<iostream.h>
int a[500000],n,i;
void ex(int i,int j)
{
int aux=a[i];
a[i]=a[j];
a[j]=aux;
}
void qs(int i,int j)
{
int s=i,d=j,piv=a[(i+j)/2];
while(s<=d)
{
while(a[s]<piv)s++;
while(a[d]>piv)d--;
if(s<=d)
{
ex(s,d);
s++;
d--;
}
}
if(i<d) qs(i,d);
if(s<j) qs(s,j);
}
int main()
{
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;
}