Pagini recente » Cod sursa (job #1840407) | Cod sursa (job #3238355) | Cod sursa (job #696735) | Cod sursa (job #1029996) | Cod sursa (job #443062)
Cod sursa(job #443062)
#include<stdio.h>
int n,v[500001],aux;
void DownHeap( int from, int to )
{
for( int son=2*from; son < to; from=son, son=2*from )
{
if( son < to-1 && v[son+1] > v[son] )
++son;
if( v[from] >= v[son] )
return;
aux=v[from];v[from]=v[son];v[son]=aux;
}
}
void HeapSort( int from, int to )
{
int i;
for( i=(to-from)/2; i >= 0; --i )
DownHeap( i, to );
while( to > from )
{
aux=v[from];v[from]=v[to-1];v[to-1]=aux;
--to;
DownHeap( from, to );
}
}
int main()
{
int i;
freopen("algsort.in","r",stdin);
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&v[i]);
HeapSort(0,n);
freopen("algsort.out","w",stdout);
for(i=0;i<n;i++)
printf("%d ",v[i]);
}