Pagini recente » Cod sursa (job #1281782) | Cod sursa (job #1022231) | Cod sursa (job #3254980) | Cod sursa (job #566847) | Cod sursa (job #2381632)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int h[500001];
int k,n;
void downheap(int poz)
{
int x=h[poz];
while(2*poz<=k)
{
int st=poz*2;
if(st+1<=k&&h[st]<h[st+1])
st++;
if(h[st]>h[poz])
{
h[poz]=h[st];
poz=st;
}
else
break;
}
h[poz]=x;
}
void heapsort(int n)
{
for(int i=n/2;i>=1;i--)
downheap(i);
}
int main()
{
fin>>n;k=n;
for(int i=1;i<=n;i++)
fin>>h[i];
heapsort(n);
for(int i=1;i<n;i++)
{
swap(h[k],h[1]);
k--;
downheap(1);
}
for(int i=1;i<=n;i++)
fout<<h[i]<<' ';
return 0;
}