Pagini recente » Cod sursa (job #313268) | Cod sursa (job #2245858) | Cod sursa (job #2060512) | Cod sursa (job #2767358) | Cod sursa (job #243174)
Cod sursa(job #243174)
#include <cstdio>
#define N 500010
int n,v[N];
void read()
{
freopen("algsort.in","r",stdin);
scanf("%d",&n);
for (int i=1;i<=n;++i)
scanf("%d",&v[i]);
}
void swap(int i,int j)
{
int x;
x=v[i];
v[i]=v[j];
v[j]=x;
}
void down_heap(int i,int n,int v[])
{
int j=i;
if (2*i<=n&&v[j]<v[2*i])
j=2*i;
if (2*i+1<=n&&v[j]<v[2*i+1])
j=2*i+1;
if (i!=j)
{
swap(i,j);
down_heap(j,n,v);
}
}
void solve()
{
for (int i=n/2;i>=1;--i)
down_heap(i,n,v);
for (int i=n;i>=1;--i)
{
swap(1,i);
down_heap(1,i-1,v);
}
}
void write()
{
freopen("algsort.out","w",stdout);
for (int i=1;i<n;++i)
printf("%d ",v[i]);
}
int main()
{
read();
solve();
write();
}