Cod sursa(job #1610940)
Utilizator | Geo Constantinescu aaabbbccc | Data | 23 februarie 2016 20:39:01 |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.65 kb |
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001],n;
int Divide(int p,int q)
{
int st=p,dr=q,x=a[p];
while(st<dr)
{
while(st<dr && a[dr]>=x)
dr--;
a[st]=a[dr];
while(st<dr && a[st]<=x)
st++;
a[dr]=a[st];
}
a[st]=x;
return st;
}
void Qsort(int p,int q)
{
int m=Divide(p,q);
if(m-1>p)
Qsort(p,m-1);
if(m+1<q)
Qsort(m+1,q);
}
int main()
{
f>>n;
for(int i=1;i<=n;i++)
{
f>>a[i];
}
Qsort(1,n);
for(int i=1;i<=n;i++)
g<<a[i]<<" ";
}