Pagini recente » Cod sursa (job #3228474) | Cod sursa (job #691577) | Cod sursa (job #2092101) | Cod sursa (job #1088225) | Cod sursa (job #240393)
Cod sursa(job #240393)
//Heapsort
#include <cstdio>
#define N 600000
int H[N],n,i,t;
void down(int tata, int n)
{
int fiu=tata<<1,t;
if (H[fiu|1]>H[fiu] && fiu<n) fiu|=1;
while (H[tata]<H[fiu] && fiu<=n)
{
t=H[tata]; H[tata]=H[fiu]; H[fiu]=t;
tata=fiu; fiu<<=1;
if (H[fiu|1]>H[fiu] && fiu<n) fiu|=1;
}
}
void sort()
{
for (i=n; i>1; i--)
{
t=H[1]; H[1]=H[i]; H[i]=t;
down(1,i-1);
}
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d\n",&n);
for (i=1; i<=n; i++) scanf("%d",&H[i]);
for (i=n>>1; i; i--) down(i,n);
for (i=1; i<=n; i++) printf("%d ",H[i]);
return 0;
}