Pagini recente » Cod sursa (job #417276) | Cod sursa (job #1512536) | Cod sursa (job #1521003) | Cod sursa (job #2252998) | Cod sursa (job #1041782)
#include <fstream>
using namespace std;
int v[500001],i,n,k;
void heap_up(int nod)
{
while (v[nod/2]<v[nod] && nod>1)
{
swap(v[nod/2],v[nod]);
nod=nod/2;
}
}
void heap_down(int nod)
{
while (nod*2+1<k && max(v[nod*2],v[nod*2+1])>v[nod])
{
if (v[nod*2]>v[nod*2+1]) swap(v[nod],v[nod*2]),heap_down(nod*2);
else swap(v[nod],v[nod*2+1]),heap_down(nod*2+1);
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
int x;
for (i=1;i<=n;i++) f>>x,v[i]=x,heap_up(i);
k=n;
while (k>1)
{ swap(v[1],v[k]);
heap_down(1);
k--;
}
for (i=1;i<=n;i++) g<<v[i]<<" ";
g<<'\n';
f.close();
g.close();
return 0;
}