Mai intai trebuie sa te autentifici.
Cod sursa(job #1061041)
Utilizator | Data | 19 decembrie 2013 08:31:57 | |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.75 kb |
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
long long v[500000],n,nh;
void RH(int i)
{
int l,r,max;
l=2*i;
r=2*i+1;
max=i;
if (l<=nh && v[l]>v[i])
max=l;
if (r<=nh && v[r]>v[max])
max=r;
if (max!=i)
{
swap(v[i],v[max]);
RH(max);
}
}
void CH()
{
int i;
nh=n;
for (i=n/2;i>=1;i--)
RH(i);
}
void HS()
{
int i;
CH();
for (i=n;i>=2;i--)
{
swap(v[1],v[i]);
nh--;
RH(1);
}
}
int main()
{
int i;
fin>>n;
nh=n;
for (i=1;i<=n;i++)
fin>>v[i];
HS();
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}