Pagini recente » Cod sursa (job #1718293) | Cod sursa (job #1261883) | Cod sursa (job #59869) | Cod sursa (job #227355) | Cod sursa (job #1385152)
#include <fstream>
#include <cstdio>
#include <algorithm>
using namespace std;
int n,i,v[500010],cn,j;
void hip(int i)
{
int fs, fd;
if (2 * i > n) return;
if (2 * i <= n)
{
fs = v[2*i];
if (2 * i + 1 <= n) fd = v[2 * i + 1];
else fd = fs - 1;
if (fs > fd)
{
if (v[2 * i] > v[i])
{
swap(v[2 * i], v[i]);
hip(2 * i);
}
}
else if (v[2 * i + 1] > v[i])
{
swap(v[2 * i + 1], v[i]);
hip(2 * i + 1);
}
}
}
int main()
{
freopen("algsort.in","r",stdin);
ofstream g ("algsort.out");
scanf("%d",&n);
cn=n;
for(i=1; i<=n; i++)
scanf("%d",&v[i]);
for(j=n/2; j>=1; --j)
hip(j);
while (n)
{
swap(v[1],v[n]);
n--;
hip (1);
}
for(i=1; i<=cn; i++)
g<<v[i]<<" ";
return 0;
}